From 2f9fa24d903b241842c38980e51ebf4be477274f Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Tue, 20 Aug 2024 18:30:31 -0700 Subject: [PATCH 01/12] chore(tests): try swapping out deploy-krypton --- docker/devnet/Clarinet.toml | 18 +++ docker/devnet/Dockerfile | 54 +++++++ docker/devnet/Makefile | 7 + .../deployments/default.devnet-plan.yaml | 8 + docker/devnet/docker-compose.yml | 21 +++ docker/devnet/settings/Devnet.toml | 152 ++++++++++++++++++ docker/devnet/start.sh | 20 +++ package.json | 4 +- 8 files changed, 282 insertions(+), 2 deletions(-) create mode 100644 docker/devnet/Clarinet.toml create mode 100644 docker/devnet/Dockerfile create mode 100644 docker/devnet/Makefile create mode 100644 docker/devnet/deployments/default.devnet-plan.yaml create mode 100644 docker/devnet/docker-compose.yml create mode 100644 docker/devnet/settings/Devnet.toml create mode 100755 docker/devnet/start.sh diff --git a/docker/devnet/Clarinet.toml b/docker/devnet/Clarinet.toml new file mode 100644 index 000000000..a9589ec94 --- /dev/null +++ b/docker/devnet/Clarinet.toml @@ -0,0 +1,18 @@ +[project] +name = "devnet" +description = "" +authors = [] +telemetry = false +cache_dir = "./.cache" + +[repl.analysis] +passes = ["check_checker"] +check_checker = { trusted_sender = false, trusted_caller = false, callee_filter = false } + +# Check-checker settings: +# trusted_sender: if true, inputs are trusted after tx_sender has been checked. +# trusted_caller: if true, inputs are trusted after contract-caller has been checked. +# callee_filter: if true, untrusted data may be passed into a private function without a +# warning, if it gets checked inside. This check will also propagate up to the +# caller. +# More informations: https://www.hiro.so/blog/new-safety-checks-in-clarinet diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile new file mode 100644 index 000000000..37abdc0a6 --- /dev/null +++ b/docker/devnet/Dockerfile @@ -0,0 +1,54 @@ +FROM --platform=$BUILDPLATFORM rust:1.68 as builder + +ARG CLARINET_VERSION=v2.8.0 +WORKDIR /usr/src/clarinet + +RUN apt-get update && apt-get install -y \ + git \ + && rm -rf /var/lib/apt/lists/* + +# building from source because I wasn't able to get the platform working from binary +RUN git clone https://github.com/hirosystems/clarinet.git . && \ + git checkout main && \ + cargo build --release + +# Final stage (using Docker-in-Docker) +FROM --platform=$BUILDPLATFORM docker:dind + +# Install necessary packages +RUN apk add --no-cache \ + ca-certificates \ + docker \ + sudo \ + net-tools \ + iproute2 \ + shadow + +# Add root to the docker group +RUN usermod -aG docker root + +# Copy Clarinet binary from builder stage +COPY --from=builder /usr/src/clarinet/target/release/clarinet /usr/local/bin/clarinet + +WORKDIR /app + +VOLUME /chainstate + +# Stacks API +EXPOSE 3700 +# Stacks-node RPC +EXPOSE 20443 +# Bitcoind JSON-RPC +EXPOSE 18443 +# Postgres +EXPOSE 5490 + +# Copy Clarinet config files +COPY Clarinet.toml . +COPY settings/Devnet.toml ./settings/ +COPY start.sh . + +RUN chmod +x start.sh + +# Start the Docker daemon and the devnet +CMD ["sh", "-c", "dockerd-entrypoint.sh && /app/start.sh"] diff --git a/docker/devnet/Makefile b/docker/devnet/Makefile new file mode 100644 index 000000000..8844c0d13 --- /dev/null +++ b/docker/devnet/Makefile @@ -0,0 +1,7 @@ +all: build run + +build: + docker build -t clarinet-devnet . + +run: + docker run --privileged --network host clarinet-devnet diff --git a/docker/devnet/deployments/default.devnet-plan.yaml b/docker/devnet/deployments/default.devnet-plan.yaml new file mode 100644 index 000000000..e50c2de12 --- /dev/null +++ b/docker/devnet/deployments/default.devnet-plan.yaml @@ -0,0 +1,8 @@ +--- +id: 0 +name: Devnet deployment +network: devnet +stacks-node: "http://localhost:20443" +bitcoin-node: "http://devnet:devnet@localhost:18453" +plan: + batches: [] diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml new file mode 100644 index 000000000..fc63cc05f --- /dev/null +++ b/docker/devnet/docker-compose.yml @@ -0,0 +1,21 @@ +services: + clarinet-devnet: + networks: + - stacks + build: + context: . + # platform: ${BUILDPLATFORM:-linux/amd64} + ports: + - "3700:3700" + - "20443:20443" + - "18443:18443" + - "5490:5490" + volumes: + - chainstate:/chainstate + environment: + - CLARINET_VERSION=v2.8.0 + +networks: + stacks: +volumes: + chainstate: diff --git a/docker/devnet/settings/Devnet.toml b/docker/devnet/settings/Devnet.toml new file mode 100644 index 000000000..7cd0fb156 --- /dev/null +++ b/docker/devnet/settings/Devnet.toml @@ -0,0 +1,152 @@ +[network] +name = "devnet" +deployment_fee_rate = 10 + +[accounts.deployer] +mnemonic = "twice kind fence tip hidden tilt action fragile skin nothing glory cousin green tomorrow spring wrist shed math olympic multiply hip blue scout claw" +balance = 100_000_000_000_000 +# secret_key: 753b7cc01a1a2e86221266a154af739463fce51219d97e4f856cd7200c3bd2a601 +# stx_address: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM +# btc_address: mqVnk6NPRdhntvfm4hh9vvjiRkFDUuSYsH + +[accounts.wallet_1] +mnemonic = "sell invite acquire kitten bamboo drastic jelly vivid peace spawn twice guilt pave pen trash pretty park cube fragile unaware remain midnight betray rebuild" +balance = 100_000_000_000_000 +# secret_key: 7287ba251d44a4d3fd9276c88ce34c5c52a038955511cccaf77e61068649c17801 +# stx_address: ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5 +# btc_address: mr1iPkD9N3RJZZxXRk7xF9d36gffa6exNC + +[accounts.wallet_2] +mnemonic = "hold excess usual excess ring elephant install account glad dry fragile donkey gaze humble truck breeze nation gasp vacuum limb head keep delay hospital" +balance = 100_000_000_000_000 +# secret_key: 530d9f61984c888536871c6573073bdfc0058896dc1adfe9a6a10dfacadc209101 +# stx_address: ST2CY5V39NHDPWSXMW9QDT3HC3GD6Q6XX4CFRK9AG +# btc_address: muYdXKmX9bByAueDe6KFfHd5Ff1gdN9ErG + +[accounts.wallet_3] +mnemonic = "cycle puppy glare enroll cost improve round trend wrist mushroom scorpion tower claim oppose clever elephant dinosaur eight problem before frozen dune wagon high" +balance = 100_000_000_000_000 +# secret_key: d655b2523bcd65e34889725c73064feb17ceb796831c0e111ba1a552b0f31b3901 +# stx_address: ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC +# btc_address: mvZtbibDAAA3WLpY7zXXFqRa3T4XSknBX7 + +[accounts.wallet_4] +mnemonic = "board list obtain sugar hour worth raven scout denial thunder horse logic fury scorpion fold genuine phrase wealth news aim below celery when cabin" +balance = 100_000_000_000_000 +# secret_key: f9d7206a47f14d2870c163ebab4bf3e70d18f5d14ce1031f3902fbbc894fe4c701 +# stx_address: ST2NEB84ASENDXKYGJPQW86YXQCEFEX2ZQPG87ND +# btc_address: mg1C76bNTutiCDV3t9nWhZs3Dc8LzUufj8 + +[accounts.wallet_5] +mnemonic = "hurry aunt blame peanut heavy update captain human rice crime juice adult scale device promote vast project quiz unit note reform update climb purchase" +balance = 100_000_000_000_000 +# secret_key: 3eccc5dac8056590432db6a35d52b9896876a3d5cbdea53b72400bc9c2099fe801 +# stx_address: ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB +# btc_address: mweN5WVqadScHdA81aATSdcVr4B6dNokqx + +[accounts.wallet_6] +mnemonic = "area desk dutch sign gold cricket dawn toward giggle vibrant indoor bench warfare wagon number tiny universe sand talk dilemma pottery bone trap buddy" +balance = 100_000_000_000_000 +# secret_key: 7036b29cb5e235e5fd9b09ae3e8eec4404e44906814d5d01cbca968a60ed4bfb01 +# stx_address: ST3AM1A56AK2C1XAFJ4115ZSV26EB49BVQ10MGCS0 +# btc_address: mzxXgV6e4BZSsz8zVHm3TmqbECt7mbuErt + +[accounts.wallet_7] +mnemonic = "prevent gallery kind limb income control noise together echo rival record wedding sense uncover school version force bleak nuclear include danger skirt enact arrow" +balance = 100_000_000_000_000 +# secret_key: b463f0df6c05d2f156393eee73f8016c5372caa0e9e29a901bb7171d90dc4f1401 +# stx_address: ST3PF13W7Z0RRM42A8VZRVFQ75SV1K26RXEP8YGKJ +# btc_address: n37mwmru2oaVosgfuvzBwgV2ysCQRrLko7 + +[accounts.wallet_8] +mnemonic = "female adjust gallery certain visit token during great side clown fitness like hurt clip knife warm bench start reunion globe detail dream depend fortune" +balance = 100_000_000_000_000 +# secret_key: 6a1a754ba863d7bab14adbbc3f8ebb090af9e871ace621d3e5ab634e1422885e01 +# stx_address: ST3NBRSFKX28FQ2ZJ1MAKX58HKHSDGNV5N7R21XCP +# btc_address: n2v875jbJ4RjBnTjgbfikDfnwsDV5iUByw + +[accounts.faucet] +mnemonic = "shadow private easily thought say logic fault paddle word top book during ignore notable orange flight clock image wealth health outside kitten belt reform" +balance = 100_000_000_000_000 +# secret_key: de433bdfa14ec43aa1098d5be594c8ffb20a31485ff9de2923b2689471c401b801 +# stx_address: STNHKEPYEPJ8ET55ZZ0M5A34J0R3N5FM2CMMMAZ6 +# btc_address: mjSrB3wS4xab3kYqFktwBzfTdPg367ZJ2d + +[devnet] +disable_stacks_explorer = false +disable_stacks_api = false +# disable_subnet_api = false +disable_bitcoin_explorer = true +# working_dir = "tmp/devnet" +# stacks_node_events_observers = ["host.docker.internal:8002"] +# miner_mnemonic = "fragile loan twenty basic net assault jazz absorb diet talk art shock innocent float punch travel gadget embrace caught blossom hockey surround initial reduce" +# miner_derivation_path = "m/44'/5757'/0'/0/0" +# faucet_mnemonic = "shadow private easily thought say logic fault paddle word top book during ignore notable orange flight clock image wealth health outside kitten belt reform" +# faucet_derivation_path = "m/44'/5757'/0'/0/0" +# orchestrator_port = 20445 +# bitcoin_node_p2p_port = 18444 +bitcoin_node_rpc_port = 18443 +bitcoin_node_username = "devnet" +bitcoin_node_password = "devnet" +# bitcoin_controller_block_time = 30_000 +stacks_node_rpc_port = 20443 +# stacks_node_p2p_port = 20444 +# stacks_api_port = 3999 +stacks_api_events_port = 3700 +# bitcoin_explorer_port = 8001 +# stacks_explorer_port = 8000 +# postgres_port = 5432 +postgres_port = 5490 +# postgres_username = "postgres" +# postgres_password = "postgres" +# postgres_database = "postgres" +# bitcoin_node_image_url = "quay.io/hirosystems/bitcoind:26.0" +# stacks_node_image_url = "quay.io/hirosystems/stacks-node:devnet-2.5" +# stacks_signer_image_url = "quay.io/hirosystems/stacks-signer:devnet-2.5" +# stacks_api_image_url = "hirosystems/stacks-blockchain-api:master" +# stacks_explorer_image_url = "hirosystems/explorer:latest" +# bitcoin_explorer_image_url = "quay.io/hirosystems/bitcoin-explorer:devnet" +# postgres_image_url = "postgres:alpine" +# enable_subnet_node = true +# subnet_node_image_url = "hirosystems/stacks-subnets:0.8.1" +# subnet_leader_mnemonic = "twice kind fence tip hidden tilt action fragile skin nothing glory cousin green tomorrow spring wrist shed math olympic multiply hip blue scout claw" +# subnet_leader_derivation_path = "m/44'/5757'/0'/0/0" +# subnet_contract_id = "ST173JK7NZBA4BS05ZRATQH1K89YJMTGEH1Z5J52E.subnet-v3-0-1" +# subnet_node_rpc_port = 30443 +# subnet_node_p2p_port = 30444 +# subnet_events_ingestion_port = 30445 +# subnet_node_events_observers = ["host.docker.internal:8002"] +# subnet_api_image_url = "hirosystems/stacks-blockchain-api:master" +# subnet_api_postgres_database = "subnet_api" + +# For testing in epoch 2.1 / using Clarity2 +# epoch_2_0 = 100 +# epoch_2_05 = 100 +# epoch_2_1 = 101 +# epoch_2_2 = 102 +# epoch_2_3 = 103 +# epoch_2_4 = 104 +# epoch_2_5 = 108 + + +# Send some stacking orders +[[devnet.pox_stacking_orders]] +start_at_cycle = 1 +duration = 12 +wallet = "wallet_1" +slots = 2 +btc_address = "mr1iPkD9N3RJZZxXRk7xF9d36gffa6exNC" + +[[devnet.pox_stacking_orders]] +start_at_cycle = 1 +duration = 12 +wallet = "wallet_2" +slots = 1 +btc_address = "muYdXKmX9bByAueDe6KFfHd5Ff1gdN9ErG" + +[[devnet.pox_stacking_orders]] +start_at_cycle = 1 +duration = 12 +wallet = "wallet_3" +slots = 1 +btc_address = "mvZtbibDAAA3WLpY7zXXFqRa3T4XSknBX7" diff --git a/docker/devnet/start.sh b/docker/devnet/start.sh new file mode 100755 index 000000000..4dcded7f1 --- /dev/null +++ b/docker/devnet/start.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -x # Enable debugging output + +# Clean up existing network and containers +docker network rm devnet.devnet || true +docker rm -f $(docker ps -a -q --filter name=devnet.devnet) || true + +# List existing networks and containers +echo "Existing networks:" +docker network ls +echo "Existing containers:" +docker ps -a + + +netstat -tuln | grep 18443 +netstat -tuln | grep 18453 + +# Start Clarinet devnet +clarinet devnet start --no-dashboard --manifest-path /app/Clarinet.toml diff --git a/package.json b/package.json index 38e7795f2..d0214fcbc 100644 --- a/package.json +++ b/package.json @@ -56,8 +56,8 @@ "devenv:stop": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-blockchain.yml -f docker/docker-compose.dev.bitcoind.yml down -v -t 0", "devenv:deploy:subnets": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.subnets.yml up --force-recreate -V", "devenv:stop:subnets": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.subnets.yml down -v -t 0", - "devenv:deploy-krypton": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-krypton.yml up --force-recreate -V", - "devenv:stop-krypton": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-krypton.yml down -v -t 0", + "devenv:deploy-krypton": "docker compose -f docker/devnet/docker-compose.yml up -d --force-recreate -V", + "devenv:stop-krypton": "docker compose -f docker/devnet/docker-compose.yml down -v -t 0", "devenv:stop:pg": "docker compose -f docker/docker-compose.dev.postgres.yml down -v -t 0", "devenv:logs": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-blockchain.yml -f docker/docker-compose.dev.bitcoind.yml logs -t -f", "devenv:logs:subnets": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.subnets.yml logs -t -f", From cc57866235a4d8c893170a9ae1058a44c0fd65a9 Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Thu, 22 Aug 2024 07:02:38 -0700 Subject: [PATCH 02/12] chore(tests): update vscode task cmds --- .vscode/tasks.json | 10 +++++----- docker/devnet/Dockerfile | 3 +++ docker/devnet/docker-compose.yml | 2 ++ docker/devnet/settings/Devnet.toml | 6 +++--- docker/devnet/start.sh | 6 ++++-- package.json | 6 ++---- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 24b522696..3a5269cb4 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -15,9 +15,9 @@ "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "dedicated", "clear": false } }, { - "label": "stacks-node:start-mocknet", + "label": "stacks-node:start-devnet", "type": "shell", - "command": "docker compose -f docker/docker-compose.dev.stacks-blockchain.yml up --force-recreate -V", + "command": "docker compose -f docker/devnet/docker-compose.yml up --force-recreate -V", "isBackground": true, "problemMatcher": { "pattern": { "regexp": ".", "file": 1, "location": 2, "message": 3, }, @@ -28,7 +28,7 @@ { "label": "stacks-node:stop-mocknet", "type": "shell", - "command": "docker compose -f docker/docker-compose.dev.stacks-blockchain.yml down -v -t 0", + "command": "docker compose -f docker/devnet/docker-compose.yml down -v -t 0", "isBackground": true, "problemMatcher": { "pattern": { "regexp": ".", "file": 1, "location": 2, "message": 3, }, @@ -85,7 +85,7 @@ { "label": "deploy:krypton", "type": "shell", - "command": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-krypton.yml up --force-recreate -V", + "command": "docker compose -f docker/devnet/docker-compose.yml up --force-recreate -V", "isBackground": true, "problemMatcher": { "pattern": { "regexp": ".", "file": 1, "location": 2, "message": 3 }, @@ -96,7 +96,7 @@ { "label": "stop:krypton", "type": "shell", - "command": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-krypton.yml down -v -t 0", + "command": "docker compose -f docker/devnet/docker-compose.yml down -v -t 0", "presentation": { "echo": true, "reveal": "silent", diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile index 37abdc0a6..7e84138b5 100644 --- a/docker/devnet/Dockerfile +++ b/docker/devnet/Dockerfile @@ -1,4 +1,5 @@ FROM --platform=$BUILDPLATFORM rust:1.68 as builder +# FROM --platform=linux/amd64 rust:1.68 as builder ARG CLARINET_VERSION=v2.8.0 WORKDIR /usr/src/clarinet @@ -13,6 +14,7 @@ RUN git clone https://github.com/hirosystems/clarinet.git . && \ cargo build --release # Final stage (using Docker-in-Docker) +# FROM --platform=linux/amd64 docker:dind FROM --platform=$BUILDPLATFORM docker:dind # Install necessary packages @@ -21,6 +23,7 @@ RUN apk add --no-cache \ docker \ sudo \ net-tools \ + file \ iproute2 \ shadow diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml index fc63cc05f..32a8f1edb 100644 --- a/docker/devnet/docker-compose.yml +++ b/docker/devnet/docker-compose.yml @@ -14,6 +14,8 @@ services: - chainstate:/chainstate environment: - CLARINET_VERSION=v2.8.0 + privileged: true + networks: stacks: diff --git a/docker/devnet/settings/Devnet.toml b/docker/devnet/settings/Devnet.toml index 7cd0fb156..98dad431a 100644 --- a/docker/devnet/settings/Devnet.toml +++ b/docker/devnet/settings/Devnet.toml @@ -73,8 +73,8 @@ balance = 100_000_000_000_000 # btc_address: mjSrB3wS4xab3kYqFktwBzfTdPg367ZJ2d [devnet] -disable_stacks_explorer = false -disable_stacks_api = false +disable_stacks_explorer = true +disable_stacks_api = true # disable_subnet_api = false disable_bitcoin_explorer = true # working_dir = "tmp/devnet" @@ -96,7 +96,7 @@ stacks_api_events_port = 3700 # bitcoin_explorer_port = 8001 # stacks_explorer_port = 8000 # postgres_port = 5432 -postgres_port = 5490 +# postgres_port = 5490 # postgres_username = "postgres" # postgres_password = "postgres" # postgres_database = "postgres" diff --git a/docker/devnet/start.sh b/docker/devnet/start.sh index 4dcded7f1..47b90e980 100755 --- a/docker/devnet/start.sh +++ b/docker/devnet/start.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh set -x # Enable debugging output @@ -16,5 +16,7 @@ docker ps -a netstat -tuln | grep 18443 netstat -tuln | grep 18453 +mkdir /app/.cache + # Start Clarinet devnet -clarinet devnet start --no-dashboard --manifest-path /app/Clarinet.toml +/usr/local/bin/clarinet devnet start --no-dashboard --manifest-path /app/Clarinet.toml diff --git a/package.json b/package.json index d0214fcbc..066efc51d 100644 --- a/package.json +++ b/package.json @@ -50,10 +50,8 @@ "lint:prettier": "prettier --check src/**/*.{ts,json}", "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx -f unix --fix && prettier --write --check src/**/*.{ts,json}", "migrate": "node-pg-migrate -m migrations", - "devenv:build": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-blockchain.yml -f docker/docker-compose.dev.bitcoind.yml -f docker/docker-compose.dev.rosetta-cli.yml build --no-cache", - "devenv:deploy": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-blockchain.yml -f docker/docker-compose.dev.bitcoind.yml up --force-recreate -V", - "devenv:follower": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-blockchain-follower.yml up --force-recreate -V", - "devenv:stop": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.stacks-blockchain.yml -f docker/docker-compose.dev.bitcoind.yml down -v -t 0", + "devenv:build": "docker compose -f docker/devnet/docker-compose.yml build", + "devenv:deploy": "docker compose -f docker/devnet/docker-compose.yml up --force-recreate -V", "devenv:deploy:subnets": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.subnets.yml up --force-recreate -V", "devenv:stop:subnets": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.subnets.yml down -v -t 0", "devenv:deploy-krypton": "docker compose -f docker/devnet/docker-compose.yml up -d --force-recreate -V", From 4cd5dc728593f98b599c368dc2670e8064034601 Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Mon, 26 Aug 2024 05:16:25 -0700 Subject: [PATCH 03/12] chore(fix): dockerfile build --- docker/devnet/Dockerfile | 16 +++++++++------- docker/devnet/settings/Devnet.toml | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile index 7e84138b5..d0553b450 100644 --- a/docker/devnet/Dockerfile +++ b/docker/devnet/Dockerfile @@ -1,20 +1,21 @@ -FROM --platform=$BUILDPLATFORM rust:1.68 as builder -# FROM --platform=linux/amd64 rust:1.68 as builder +FROM --platform=$BUILDPLATFORM rust:1.68-alpine as builder ARG CLARINET_VERSION=v2.8.0 WORKDIR /usr/src/clarinet -RUN apt-get update && apt-get install -y \ +RUN apk add --no-cache \ git \ - && rm -rf /var/lib/apt/lists/* + build-base \ + curl \ + pkgconfig # building from source because I wasn't able to get the platform working from binary -RUN git clone https://github.com/hirosystems/clarinet.git . && \ +RUN git clone https://github.com/hirosystems/clarinet.git && \ + cd clarinet && \ git checkout main && \ cargo build --release # Final stage (using Docker-in-Docker) -# FROM --platform=linux/amd64 docker:dind FROM --platform=$BUILDPLATFORM docker:dind # Install necessary packages @@ -31,7 +32,7 @@ RUN apk add --no-cache \ RUN usermod -aG docker root # Copy Clarinet binary from builder stage -COPY --from=builder /usr/src/clarinet/target/release/clarinet /usr/local/bin/clarinet +COPY --from=builder /usr/src/clarinet/clarinet/target/release/clarinet /usr/local/bin/clarinet WORKDIR /app @@ -45,6 +46,7 @@ EXPOSE 20443 EXPOSE 18443 # Postgres EXPOSE 5490 +EXPOSE 5432 # Copy Clarinet config files COPY Clarinet.toml . diff --git a/docker/devnet/settings/Devnet.toml b/docker/devnet/settings/Devnet.toml index 98dad431a..36457a9a8 100644 --- a/docker/devnet/settings/Devnet.toml +++ b/docker/devnet/settings/Devnet.toml @@ -96,7 +96,7 @@ stacks_api_events_port = 3700 # bitcoin_explorer_port = 8001 # stacks_explorer_port = 8000 # postgres_port = 5432 -# postgres_port = 5490 +postgres_port = 5490 # postgres_username = "postgres" # postgres_password = "postgres" # postgres_database = "postgres" From a8fc5bd5f7121f39af2181acef011b5611cbb32c Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Mon, 26 Aug 2024 09:06:58 -0700 Subject: [PATCH 04/12] fix: get entrypoint in start.sh --- docker/devnet/Dockerfile | 2 +- docker/devnet/docker-compose.yml | 7 +++++++ docker/devnet/start.sh | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile index d0553b450..66a83eb20 100644 --- a/docker/devnet/Dockerfile +++ b/docker/devnet/Dockerfile @@ -56,4 +56,4 @@ COPY start.sh . RUN chmod +x start.sh # Start the Docker daemon and the devnet -CMD ["sh", "-c", "dockerd-entrypoint.sh && /app/start.sh"] +CMD ["/app/start.sh"] diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml index 32a8f1edb..8c0db4402 100644 --- a/docker/devnet/docker-compose.yml +++ b/docker/devnet/docker-compose.yml @@ -2,18 +2,25 @@ services: clarinet-devnet: networks: - stacks + restart: on-failure build: context: . # platform: ${BUILDPLATFORM:-linux/amd64} ports: - "3700:3700" - "20443:20443" + - '20444:20444' - "18443:18443" - "5490:5490" volumes: - chainstate:/chainstate + - ../stacks-blockchain/:/app/config + - ../stacks-blockchain/.chaindata:/tmp/stacks-blockchain-data environment: - CLARINET_VERSION=v2.8.0 + - STACKS_EVENT_OBSERVER=host.docker.internal:3700 + extra_hosts: + - 'host.docker.internal:host-gateway' # fixes `host.docker.internal` on linux hosts privileged: true diff --git a/docker/devnet/start.sh b/docker/devnet/start.sh index 47b90e980..7dfe8a74a 100755 --- a/docker/devnet/start.sh +++ b/docker/devnet/start.sh @@ -19,4 +19,5 @@ netstat -tuln | grep 18453 mkdir /app/.cache # Start Clarinet devnet +sh -c dockerd-entrypoint.sh /usr/local/bin/clarinet devnet start --no-dashboard --manifest-path /app/Clarinet.toml From ad4b90848d4027e33ee95eb148dbfcd365c15de4 Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Mon, 2 Sep 2024 07:48:38 -0700 Subject: [PATCH 05/12] fix(): daemon blocking and add docker host fix --- docker/devnet/Dockerfile | 4 ++-- docker/devnet/settings/Devnet.toml | 4 +++- docker/devnet/start.sh | 23 ++++++----------------- src/datastore/connection.ts | 24 ++++++++++++------------ 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile index 66a83eb20..9aa6f33fb 100644 --- a/docker/devnet/Dockerfile +++ b/docker/devnet/Dockerfile @@ -1,7 +1,7 @@ FROM --platform=$BUILDPLATFORM rust:1.68-alpine as builder ARG CLARINET_VERSION=v2.8.0 -WORKDIR /usr/src/clarinet +WORKDIR /usr/src/ RUN apk add --no-cache \ git \ @@ -32,7 +32,7 @@ RUN apk add --no-cache \ RUN usermod -aG docker root # Copy Clarinet binary from builder stage -COPY --from=builder /usr/src/clarinet/clarinet/target/release/clarinet /usr/local/bin/clarinet +COPY --from=builder /usr/src/clarinet/target/release/clarinet /usr/local/bin/clarinet WORKDIR /app diff --git a/docker/devnet/settings/Devnet.toml b/docker/devnet/settings/Devnet.toml index 36457a9a8..a0b806ced 100644 --- a/docker/devnet/settings/Devnet.toml +++ b/docker/devnet/settings/Devnet.toml @@ -73,6 +73,7 @@ balance = 100_000_000_000_000 # btc_address: mjSrB3wS4xab3kYqFktwBzfTdPg367ZJ2d [devnet] +use_docker_gateway_routing = true disable_stacks_explorer = true disable_stacks_api = true # disable_subnet_api = false @@ -99,7 +100,8 @@ stacks_api_events_port = 3700 postgres_port = 5490 # postgres_username = "postgres" # postgres_password = "postgres" -# postgres_database = "postgres" +postgres_database = "postgres" +# postgres_database = "stacks_blockchain_api" # bitcoin_node_image_url = "quay.io/hirosystems/bitcoind:26.0" # stacks_node_image_url = "quay.io/hirosystems/stacks-node:devnet-2.5" # stacks_signer_image_url = "quay.io/hirosystems/stacks-signer:devnet-2.5" diff --git a/docker/devnet/start.sh b/docker/devnet/start.sh index 7dfe8a74a..123696653 100755 --- a/docker/devnet/start.sh +++ b/docker/devnet/start.sh @@ -2,22 +2,11 @@ set -x # Enable debugging output -# Clean up existing network and containers -docker network rm devnet.devnet || true -docker rm -f $(docker ps -a -q --filter name=devnet.devnet) || true +sh -c dockerd-entrypoint.sh & -# List existing networks and containers -echo "Existing networks:" -docker network ls -echo "Existing containers:" -docker ps -a - - -netstat -tuln | grep 18443 -netstat -tuln | grep 18453 - -mkdir /app/.cache - -# Start Clarinet devnet -sh -c dockerd-entrypoint.sh +until [ -S /var/run/docker.sock ]; do + echo "Waiting for Docker to start..." + sleep 1 +done +echo "starting clarinet devnet" /usr/local/bin/clarinet devnet start --no-dashboard --manifest-path /app/Clarinet.toml diff --git a/src/datastore/connection.ts b/src/datastore/connection.ts index c1ff99cde..9d9541c54 100644 --- a/src/datastore/connection.ts +++ b/src/datastore/connection.ts @@ -26,18 +26,18 @@ export function getPgConnectionEnvValue( } export function getConnectionArgs(server: PgServer = PgServer.default): PgConnectionArgs { - return ( - getPgConnectionEnvValue('CONNECTION_URI', server) ?? { - database: getPgConnectionEnvValue('DATABASE', server), - user: getPgConnectionEnvValue('USER', server), - password: getPgConnectionEnvValue('PASSWORD', server), - host: getPgConnectionEnvValue('HOST', server), - port: parseInt(getPgConnectionEnvValue('PORT', server) ?? '5432'), - ssl: getPgConnectionEnvValue('SSL', server) == 'true', - schema: getPgConnectionEnvValue('SCHEMA', server), - application_name: getPgConnectionEnvValue('APPLICATION_NAME', server), - } - ); + const conn = getPgConnectionEnvValue('CONNECTION_URI', server) ?? { + database: getPgConnectionEnvValue('DATABASE', server), + user: getPgConnectionEnvValue('USER', server), + password: getPgConnectionEnvValue('PASSWORD', server), + host: getPgConnectionEnvValue('HOST', server), + port: parseInt(getPgConnectionEnvValue('PORT', server) ?? '5432'), + ssl: getPgConnectionEnvValue('SSL', server) == 'true', + schema: getPgConnectionEnvValue('SCHEMA', server), + application_name: getPgConnectionEnvValue('APPLICATION_NAME', server), + }; + console.log(conn); + return conn; } export function getConnectionConfig(server: PgServer = PgServer.default): PgConnectionOptions { From 66eff3028d66b0458454d110da295be99f69ec8d Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Tue, 24 Sep 2024 16:42:53 -0700 Subject: [PATCH 06/12] fix: include the root dockerfile for api --- docker/devnet/Dockerfile | 13 +++----- docker/devnet/Dockerfile.clarinet-builder | 20 ++++++++++++ docker/devnet/docker-compose.yml | 39 +++++++++++++++++++++-- docker/devnet/settings/Devnet.toml | 14 ++++++-- docker/docker-compose.yml | 2 +- package.json | 1 + 6 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 docker/devnet/Dockerfile.clarinet-builder diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile index 9aa6f33fb..fd1bc61f5 100644 --- a/docker/devnet/Dockerfile +++ b/docker/devnet/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=$BUILDPLATFORM rust:1.68-alpine as builder +FROM --platform=$BUILDPLATFORM rust:1.68-alpine as clarinet-builder ARG CLARINET_VERSION=v2.8.0 WORKDIR /usr/src/ @@ -9,16 +9,14 @@ RUN apk add --no-cache \ curl \ pkgconfig -# building from source because I wasn't able to get the platform working from binary +# Build Clarinet from source RUN git clone https://github.com/hirosystems/clarinet.git && \ cd clarinet && \ - git checkout main && \ + git checkout 1bdc272 && \ cargo build --release -# Final stage (using Docker-in-Docker) FROM --platform=$BUILDPLATFORM docker:dind -# Install necessary packages RUN apk add --no-cache \ ca-certificates \ docker \ @@ -31,8 +29,8 @@ RUN apk add --no-cache \ # Add root to the docker group RUN usermod -aG docker root -# Copy Clarinet binary from builder stage -COPY --from=builder /usr/src/clarinet/target/release/clarinet /usr/local/bin/clarinet +# Copy Clarinet binary from builder image +COPY --from=clarinet-builder /usr/src/clarinet/target/release/clarinet /usr/local/bin/clarinet WORKDIR /app @@ -46,7 +44,6 @@ EXPOSE 20443 EXPOSE 18443 # Postgres EXPOSE 5490 -EXPOSE 5432 # Copy Clarinet config files COPY Clarinet.toml . diff --git a/docker/devnet/Dockerfile.clarinet-builder b/docker/devnet/Dockerfile.clarinet-builder new file mode 100644 index 000000000..9971c189f --- /dev/null +++ b/docker/devnet/Dockerfile.clarinet-builder @@ -0,0 +1,20 @@ +# Dockerfile.clarinet-builder + +FROM --platform=$BUILDPLATFORM rust:1.68-alpine as builder + +ARG CLARINET_VERSION=v2.8.0 +WORKDIR /usr/src/ + +RUN apk add --no-cache \ + git \ + build-base \ + curl \ + pkgconfig + +# Build Clarinet from source +RUN git clone https://github.com/hirosystems/clarinet.git && \ + cd clarinet && \ + git checkout 1bdc272 && \ + cargo build --release + +# This image produces the built Clarinet binary diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml index 8c0db4402..f213e085a 100644 --- a/docker/devnet/docker-compose.yml +++ b/docker/devnet/docker-compose.yml @@ -1,7 +1,16 @@ services: + # clarinet-builder: + # build: + # context: . + # dockerfile: Dockerfile.clarinet-builder + # networks: + # - backend + clarinet-devnet: + # depends_on: + # - clarinet-builder networks: - - stacks + - backend restart: on-failure build: context: . @@ -23,8 +32,34 @@ services: - 'host.docker.internal:host-gateway' # fixes `host.docker.internal` on linux hosts privileged: true + stacks-blockchain-api: + build: + context: ../.. + restart: on-failure + environment: + PG_HOST: postgres + PG_PORT: 5490 + PG_USER: postgres + PG_PASSWORD: postgres + PG_DATABASE: stacks_blockchain_api + STACKS_CORE_EVENT_PORT: 3700 + STACKS_CORE_EVENT_HOST: http://0.0.0.0 + STACKS_BLOCKCHAIN_API_PORT: 3999 + STACKS_BLOCKCHAIN_API_HOST: 0.0.0.0 + STACKS_CORE_RPC_HOST: stacks-blockchain + STACKS_CORE_RPC_PORT: 20443 + NODE_ENV: development + ports: + - "3999:3999" + - "9153:9153" + volumes: + - ../stacks-blockchain/:/app/config + networks: + - backend + depends_on: + - clarinet-devnet networks: - stacks: + backend: volumes: chainstate: diff --git a/docker/devnet/settings/Devnet.toml b/docker/devnet/settings/Devnet.toml index a0b806ced..e4581351e 100644 --- a/docker/devnet/settings/Devnet.toml +++ b/docker/devnet/settings/Devnet.toml @@ -76,6 +76,7 @@ balance = 100_000_000_000_000 use_docker_gateway_routing = true disable_stacks_explorer = true disable_stacks_api = true +disable_postgres = false # disable_subnet_api = false disable_bitcoin_explorer = true # working_dir = "tmp/devnet" @@ -100,8 +101,8 @@ stacks_api_events_port = 3700 postgres_port = 5490 # postgres_username = "postgres" # postgres_password = "postgres" -postgres_database = "postgres" -# postgres_database = "stacks_blockchain_api" +# postgres_database = "postgres" +postgres_database = "stacks_blockchain_api" # bitcoin_node_image_url = "quay.io/hirosystems/bitcoind:26.0" # stacks_node_image_url = "quay.io/hirosystems/stacks-node:devnet-2.5" # stacks_signer_image_url = "quay.io/hirosystems/stacks-signer:devnet-2.5" @@ -122,6 +123,7 @@ postgres_database = "postgres" # subnet_api_postgres_database = "subnet_api" # For testing in epoch 2.1 / using Clarity2 +# defaults # epoch_2_0 = 100 # epoch_2_05 = 100 # epoch_2_1 = 101 @@ -130,6 +132,14 @@ postgres_database = "postgres" # epoch_2_4 = 104 # epoch_2_5 = 108 +epoch_2_0 = 103 +epoch_2_05 = 104 +epoch_2_1 = 106 +epoch_2_2 = 108 +epoch_2_3 = 109 +epoch_2_4 = 111 +epoch_2_5 = 112 +epoch_3_0 = 132 # Send some stacking orders [[devnet.pox_stacking_orders]] diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index b9a4be63b..283f115cc 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -52,7 +52,7 @@ services: - ../stacks-blockchain/:/app/config networks: - backend - depends_on: + depends_on: - postgres networks: diff --git a/package.json b/package.json index 066efc51d..05ee83b72 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "migrate": "node-pg-migrate -m migrations", "devenv:build": "docker compose -f docker/devnet/docker-compose.yml build", "devenv:deploy": "docker compose -f docker/devnet/docker-compose.yml up --force-recreate -V", + "devenv:stop": "docker compose -f docker/devnet/docker-compose.yml down -v -t 0", "devenv:deploy:subnets": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.subnets.yml up --force-recreate -V", "devenv:stop:subnets": "docker compose -f docker/docker-compose.dev.postgres.yml -f docker/docker-compose.dev.subnets.yml down -v -t 0", "devenv:deploy-krypton": "docker compose -f docker/devnet/docker-compose.yml up -d --force-recreate -V", From d1dfc9ccde092db41e180f4e3ff6d137b5e13d2a Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Mon, 7 Oct 2024 06:09:02 -0700 Subject: [PATCH 07/12] fix: remove containerized api --- docker/devnet/docker-compose.yml | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml index f213e085a..414b8a7fe 100644 --- a/docker/devnet/docker-compose.yml +++ b/docker/devnet/docker-compose.yml @@ -32,33 +32,6 @@ services: - 'host.docker.internal:host-gateway' # fixes `host.docker.internal` on linux hosts privileged: true - stacks-blockchain-api: - build: - context: ../.. - restart: on-failure - environment: - PG_HOST: postgres - PG_PORT: 5490 - PG_USER: postgres - PG_PASSWORD: postgres - PG_DATABASE: stacks_blockchain_api - STACKS_CORE_EVENT_PORT: 3700 - STACKS_CORE_EVENT_HOST: http://0.0.0.0 - STACKS_BLOCKCHAIN_API_PORT: 3999 - STACKS_BLOCKCHAIN_API_HOST: 0.0.0.0 - STACKS_CORE_RPC_HOST: stacks-blockchain - STACKS_CORE_RPC_PORT: 20443 - NODE_ENV: development - ports: - - "3999:3999" - - "9153:9153" - volumes: - - ../stacks-blockchain/:/app/config - networks: - - backend - depends_on: - - clarinet-devnet - networks: backend: volumes: From 455bb364c7ea9db2c8b730003c72038c1b8c12bd Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Tue, 8 Oct 2024 07:19:50 -0700 Subject: [PATCH 08/12] chore: use patch branch --- docker/devnet/Dockerfile | 4 ++-- docker/devnet/docker-compose.yml | 2 ++ docker/devnet/settings/Devnet.toml | 25 +++++++++++++++---------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile index fd1bc61f5..0050f5074 100644 --- a/docker/devnet/Dockerfile +++ b/docker/devnet/Dockerfile @@ -12,7 +12,7 @@ RUN apk add --no-cache \ # Build Clarinet from source RUN git clone https://github.com/hirosystems/clarinet.git && \ cd clarinet && \ - git checkout 1bdc272 && \ + git checkout 1717a4e && \ cargo build --release FROM --platform=$BUILDPLATFORM docker:dind @@ -37,7 +37,7 @@ WORKDIR /app VOLUME /chainstate # Stacks API -EXPOSE 3700 +# EXPOSE 3700 # Stacks-node RPC EXPOSE 20443 # Bitcoind JSON-RPC diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml index 414b8a7fe..29b4beff0 100644 --- a/docker/devnet/docker-compose.yml +++ b/docker/devnet/docker-compose.yml @@ -9,6 +9,7 @@ services: clarinet-devnet: # depends_on: # - clarinet-builder + # network_mode: "host" # equivalent to --network host networks: - backend restart: on-failure @@ -28,6 +29,7 @@ services: environment: - CLARINET_VERSION=v2.8.0 - STACKS_EVENT_OBSERVER=host.docker.internal:3700 + - PG_DATABASE=stacks_api extra_hosts: - 'host.docker.internal:host-gateway' # fixes `host.docker.internal` on linux hosts privileged: true diff --git a/docker/devnet/settings/Devnet.toml b/docker/devnet/settings/Devnet.toml index e4581351e..030774527 100644 --- a/docker/devnet/settings/Devnet.toml +++ b/docker/devnet/settings/Devnet.toml @@ -80,7 +80,7 @@ disable_postgres = false # disable_subnet_api = false disable_bitcoin_explorer = true # working_dir = "tmp/devnet" -# stacks_node_events_observers = ["host.docker.internal:8002"] +stacks_node_events_observers = ["host.docker.internal:3700"] # miner_mnemonic = "fragile loan twenty basic net assault jazz absorb diet talk art shock innocent float punch travel gadget embrace caught blossom hockey surround initial reduce" # miner_derivation_path = "m/44'/5757'/0'/0/0" # faucet_mnemonic = "shadow private easily thought say logic fault paddle word top book during ignore notable orange flight clock image wealth health outside kitten belt reform" @@ -102,7 +102,7 @@ postgres_port = 5490 # postgres_username = "postgres" # postgres_password = "postgres" # postgres_database = "postgres" -postgres_database = "stacks_blockchain_api" +postgres_database = "stacks_api" # bitcoin_node_image_url = "quay.io/hirosystems/bitcoind:26.0" # stacks_node_image_url = "quay.io/hirosystems/stacks-node:devnet-2.5" # stacks_signer_image_url = "quay.io/hirosystems/stacks-signer:devnet-2.5" @@ -132,14 +132,19 @@ postgres_database = "stacks_blockchain_api" # epoch_2_4 = 104 # epoch_2_5 = 108 -epoch_2_0 = 103 -epoch_2_05 = 104 -epoch_2_1 = 106 -epoch_2_2 = 108 -epoch_2_3 = 109 -epoch_2_4 = 111 -epoch_2_5 = 112 -epoch_3_0 = 132 +# from stacks_blockchain_api settings +# epoch_2_0 = 100 +# epoch_2_05 = 104 +# epoch_2_1 = 106 +# epoch_2_2 = 108 +# epoch_2_3 = 109 +# epoch_2_4 = 111 +# epoch_2_5 = 112 +# epoch_3_0 = 144 +epoch_3_0 = 144 + +stacks_node_image_url = "quay.io/hirosystems/stacks-node:devnet2.9.0-epoch3.0" +stacks_signer_image_url = "quay.io/hirosystems/stacks-signer:devnet2.9.0-epoch3.0" # Send some stacking orders [[devnet.pox_stacking_orders]] From 972f395d4911d2e21f6088f901f6954841055ad9 Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Tue, 15 Oct 2024 06:40:10 -0700 Subject: [PATCH 09/12] chore: review clean up --- docker/devnet/Dockerfile | 5 ++--- docker/devnet/Dockerfile.clarinet-builder | 5 ++--- docker/devnet/Makefile | 7 ------- docker/devnet/deployments/default.devnet-plan.yaml | 2 +- docker/devnet/docker-compose.yml | 3 --- docker/devnet/settings/Devnet.toml | 4 ++-- 6 files changed, 7 insertions(+), 19 deletions(-) delete mode 100644 docker/devnet/Makefile diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile index 0050f5074..c890d07dd 100644 --- a/docker/devnet/Dockerfile +++ b/docker/devnet/Dockerfile @@ -1,6 +1,5 @@ -FROM --platform=$BUILDPLATFORM rust:1.68-alpine as clarinet-builder +FROM --platform=$BUILDPLATFORM rust:alpine as clarinet-builder -ARG CLARINET_VERSION=v2.8.0 WORKDIR /usr/src/ RUN apk add --no-cache \ @@ -12,7 +11,7 @@ RUN apk add --no-cache \ # Build Clarinet from source RUN git clone https://github.com/hirosystems/clarinet.git && \ cd clarinet && \ - git checkout 1717a4e && \ + git checkout main && \ cargo build --release FROM --platform=$BUILDPLATFORM docker:dind diff --git a/docker/devnet/Dockerfile.clarinet-builder b/docker/devnet/Dockerfile.clarinet-builder index 9971c189f..cff69d7dd 100644 --- a/docker/devnet/Dockerfile.clarinet-builder +++ b/docker/devnet/Dockerfile.clarinet-builder @@ -1,8 +1,7 @@ # Dockerfile.clarinet-builder -FROM --platform=$BUILDPLATFORM rust:1.68-alpine as builder +FROM --platform=$BUILDPLATFORM rust:alpine as builder -ARG CLARINET_VERSION=v2.8.0 WORKDIR /usr/src/ RUN apk add --no-cache \ @@ -14,7 +13,7 @@ RUN apk add --no-cache \ # Build Clarinet from source RUN git clone https://github.com/hirosystems/clarinet.git && \ cd clarinet && \ - git checkout 1bdc272 && \ + git checkout main && \ cargo build --release # This image produces the built Clarinet binary diff --git a/docker/devnet/Makefile b/docker/devnet/Makefile deleted file mode 100644 index 8844c0d13..000000000 --- a/docker/devnet/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: build run - -build: - docker build -t clarinet-devnet . - -run: - docker run --privileged --network host clarinet-devnet diff --git a/docker/devnet/deployments/default.devnet-plan.yaml b/docker/devnet/deployments/default.devnet-plan.yaml index e50c2de12..abfa45abe 100644 --- a/docker/devnet/deployments/default.devnet-plan.yaml +++ b/docker/devnet/deployments/default.devnet-plan.yaml @@ -3,6 +3,6 @@ id: 0 name: Devnet deployment network: devnet stacks-node: "http://localhost:20443" -bitcoin-node: "http://devnet:devnet@localhost:18453" +bitcoin-node: "http://devnet:devnet@localhost:18443" plan: batches: [] diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml index 29b4beff0..913f8f041 100644 --- a/docker/devnet/docker-compose.yml +++ b/docker/devnet/docker-compose.yml @@ -17,7 +17,6 @@ services: context: . # platform: ${BUILDPLATFORM:-linux/amd64} ports: - - "3700:3700" - "20443:20443" - '20444:20444' - "18443:18443" @@ -27,8 +26,6 @@ services: - ../stacks-blockchain/:/app/config - ../stacks-blockchain/.chaindata:/tmp/stacks-blockchain-data environment: - - CLARINET_VERSION=v2.8.0 - - STACKS_EVENT_OBSERVER=host.docker.internal:3700 - PG_DATABASE=stacks_api extra_hosts: - 'host.docker.internal:host-gateway' # fixes `host.docker.internal` on linux hosts diff --git a/docker/devnet/settings/Devnet.toml b/docker/devnet/settings/Devnet.toml index 030774527..b5ab1bb2b 100644 --- a/docker/devnet/settings/Devnet.toml +++ b/docker/devnet/settings/Devnet.toml @@ -80,7 +80,7 @@ disable_postgres = false # disable_subnet_api = false disable_bitcoin_explorer = true # working_dir = "tmp/devnet" -stacks_node_events_observers = ["host.docker.internal:3700"] +# stacks_node_events_observers = ["host.docker.internal:3700"] # miner_mnemonic = "fragile loan twenty basic net assault jazz absorb diet talk art shock innocent float punch travel gadget embrace caught blossom hockey surround initial reduce" # miner_derivation_path = "m/44'/5757'/0'/0/0" # faucet_mnemonic = "shadow private easily thought say logic fault paddle word top book during ignore notable orange flight clock image wealth health outside kitten belt reform" @@ -94,7 +94,7 @@ bitcoin_node_password = "devnet" stacks_node_rpc_port = 20443 # stacks_node_p2p_port = 20444 # stacks_api_port = 3999 -stacks_api_events_port = 3700 +# stacks_api_events_port = 3700 # bitcoin_explorer_port = 8001 # stacks_explorer_port = 8000 # postgres_port = 5432 From cdb74737f42eb1c53f6be02118c955bf429363eb Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Tue, 15 Oct 2024 10:27:22 -0700 Subject: [PATCH 10/12] fix: docker sock binding and remove network in compose --- docker/devnet/Dockerfile | 2 +- docker/devnet/docker-compose.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile index c890d07dd..c42bf41bb 100644 --- a/docker/devnet/Dockerfile +++ b/docker/devnet/Dockerfile @@ -11,7 +11,7 @@ RUN apk add --no-cache \ # Build Clarinet from source RUN git clone https://github.com/hirosystems/clarinet.git && \ cd clarinet && \ - git checkout main && \ + git checkout docker-sock-bind && \ cargo build --release FROM --platform=$BUILDPLATFORM docker:dind diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml index 913f8f041..f0b368e34 100644 --- a/docker/devnet/docker-compose.yml +++ b/docker/devnet/docker-compose.yml @@ -10,8 +10,8 @@ services: # depends_on: # - clarinet-builder # network_mode: "host" # equivalent to --network host - networks: - - backend + # networks: + # - backend restart: on-failure build: context: . @@ -31,7 +31,7 @@ services: - 'host.docker.internal:host-gateway' # fixes `host.docker.internal` on linux hosts privileged: true -networks: - backend: +# networks: +# backend: volumes: chainstate: From 344292fdc73287a433cd6bbad2ab99628aee9eba Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Fri, 18 Oct 2024 11:42:54 -0700 Subject: [PATCH 11/12] fix: try clarinet patch with docker.socks again --- docker/devnet/Dockerfile | 4 +++- docker/devnet/docker-compose.yml | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docker/devnet/Dockerfile b/docker/devnet/Dockerfile index c42bf41bb..5478f8de7 100644 --- a/docker/devnet/Dockerfile +++ b/docker/devnet/Dockerfile @@ -11,7 +11,9 @@ RUN apk add --no-cache \ # Build Clarinet from source RUN git clone https://github.com/hirosystems/clarinet.git && \ cd clarinet && \ - git checkout docker-sock-bind && \ + # git checkout docker-sock-bind && \ + # git checkout main && \ + git checkout 4cb70b0c && \ cargo build --release FROM --platform=$BUILDPLATFORM docker:dind diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml index f0b368e34..913f8f041 100644 --- a/docker/devnet/docker-compose.yml +++ b/docker/devnet/docker-compose.yml @@ -10,8 +10,8 @@ services: # depends_on: # - clarinet-builder # network_mode: "host" # equivalent to --network host - # networks: - # - backend + networks: + - backend restart: on-failure build: context: . @@ -31,7 +31,7 @@ services: - 'host.docker.internal:host-gateway' # fixes `host.docker.internal` on linux hosts privileged: true -# networks: -# backend: +networks: + backend: volumes: chainstate: From 828413597d97084e37baf2f9967d3176d011759d Mon Sep 17 00:00:00 2001 From: "brady.ouren" Date: Thu, 24 Oct 2024 07:57:15 -0700 Subject: [PATCH 12/12] fix: hardcvode some tests --- .env | 2 +- docker/devnet/docker-compose.yml | 4 +++- docker/devnet/settings/Devnet.toml | 5 +++-- src/datastore/connection.ts | 2 +- tests/2.5/env-setup.ts | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.env b/.env index 25ca66d3e..4f06d5bc4 100644 --- a/.env +++ b/.env @@ -2,7 +2,7 @@ PG_HOST=127.0.0.1 PG_PORT=5490 PG_USER=postgres PG_PASSWORD=postgres -PG_DATABASE=stacks_blockchain_api +PG_DATABASE=stacks_api PG_SCHEMA=public PG_SSL=false # Idle connection timeout in seconds, defaults to 30 diff --git a/docker/devnet/docker-compose.yml b/docker/devnet/docker-compose.yml index 913f8f041..c5288e243 100644 --- a/docker/devnet/docker-compose.yml +++ b/docker/devnet/docker-compose.yml @@ -26,7 +26,9 @@ services: - ../stacks-blockchain/:/app/config - ../stacks-blockchain/.chaindata:/tmp/stacks-blockchain-data environment: - - PG_DATABASE=stacks_api + - PG_DATABASE=stacks_blockchain_api + - POSTGRES_DB=stacks_blockchain_api + - STACKS_CHAIN_ID=0x80000000 extra_hosts: - 'host.docker.internal:host-gateway' # fixes `host.docker.internal` on linux hosts privileged: true diff --git a/docker/devnet/settings/Devnet.toml b/docker/devnet/settings/Devnet.toml index b5ab1bb2b..6906396c0 100644 --- a/docker/devnet/settings/Devnet.toml +++ b/docker/devnet/settings/Devnet.toml @@ -99,9 +99,10 @@ stacks_node_rpc_port = 20443 # stacks_explorer_port = 8000 # postgres_port = 5432 postgres_port = 5490 -# postgres_username = "postgres" -# postgres_password = "postgres" +postgres_username = "postgres" +postgres_password = "postgres" # postgres_database = "postgres" +# postgres_database = "stacks_api" postgres_database = "stacks_api" # bitcoin_node_image_url = "quay.io/hirosystems/bitcoind:26.0" # stacks_node_image_url = "quay.io/hirosystems/stacks-node:devnet-2.5" diff --git a/src/datastore/connection.ts b/src/datastore/connection.ts index 9d9541c54..bdd660bd2 100644 --- a/src/datastore/connection.ts +++ b/src/datastore/connection.ts @@ -27,7 +27,7 @@ export function getPgConnectionEnvValue( export function getConnectionArgs(server: PgServer = PgServer.default): PgConnectionArgs { const conn = getPgConnectionEnvValue('CONNECTION_URI', server) ?? { - database: getPgConnectionEnvValue('DATABASE', server), + database: 'stacks_api', // getPgConnectionEnvValue('DATABASE', server), user: getPgConnectionEnvValue('USER', server), password: getPgConnectionEnvValue('PASSWORD', server), host: getPgConnectionEnvValue('HOST', server), diff --git a/tests/2.5/env-setup.ts b/tests/2.5/env-setup.ts index 65e6ce380..dc4f10983 100644 --- a/tests/2.5/env-setup.ts +++ b/tests/2.5/env-setup.ts @@ -16,7 +16,7 @@ beforeAll(async () => { } loadDotEnv(); - process.env.PG_DATABASE = 'postgres'; + process.env.PG_DATABASE = 'stacks_api'; process.env.STACKS_CHAIN_ID = '0x80000000'; const db = await PgWriteStore.connect({ usageName: 'tests' });