jam/docker/regtest/docker-compose.yml
2025-09-05 23:23:43 +02:00

228 lines
7.1 KiB
YAML

services:
joinmarket:
container_name: jm_regtest_joinmarket
extends:
file: docker-compose-common.yml
service: joinmarket_native
environment:
READY_FILE: /root/.regtest-initializer/btc_fully_synched
jm_rpc_wallet_file: jm_primary
jm_rpc_user: joinmarket
jm_rpc_password: joinmarket
ports:
- "62601:62601"
- "28183:28183"
- "28283:28283"
volumes:
- "joinmarket_datadir:/root/.joinmarket"
- "initializer_datadir:/root/.regtest-initializer"
depends_on:
bitcoind:
condition: service_healthy
bitcoind_regtest_initializer:
condition: service_started
irc:
condition: service_started
joinmarket2:
container_name: jm_regtest_joinmarket2
extends:
file: docker-compose-common.yml
service: joinmarket_jam_standalone
environment:
APP_USER: joinmarket
APP_PASSWORD: joinmarket
jm_rpc_wallet_file: jm_secondary
jm_rpc_cookie_file: /root/.bitcoin_data/regtest/.cookie
ports:
- "29080:80"
- "29183:28183" # exposed for "init setup" routine
volumes:
- "joinmarket2_datadir:/root/.joinmarket"
- "bitcoin_datadir:/root/.bitcoin_data" # mount bitcoind dir to access .cookie file
depends_on:
bitcoind:
condition: service_healthy
bitcoind_regtest_initializer:
condition: service_started
irc:
condition: service_started
joinmarket3:
container_name: jm_regtest_joinmarket3
extends:
file: docker-compose-common.yml
service: joinmarket_jam_standalone
environment:
READY_FILE: /root/.regtest-initializer/btc_fully_synched
WAIT_FOR_BITCOIND: "false"
jm_rpc_wallet_file: jm_tertiary
jm_rpc_user: joinmarket3
jm_rpc_password: joinmarket3
ports:
- "30080:80"
- "30183:28183" # exposed for "init setup" routine
volumes:
- "joinmarket3_datadir:/root/.joinmarket"
- "initializer_datadir:/root/.regtest-initializer"
depends_on:
bitcoind:
condition: service_healthy
bitcoind_regtest_initializer:
condition: service_started
irc:
condition: service_started
joinmarket_directory_node:
container_name: jm_regtest_joinmarket_directory_node
build:
context: ./dockerfile-deps/joinmarket/directory_node
dockerfile: Dockerfile
restart: unless-stopped
environment:
jm_hidden_service_dir: \/root\/.joinmarket\/hidden_service_dir
jm_directory_nodes: ${JM_DIRECTORY_NODES:?You must set the onion address generated in prepare step to your .env file}
jm_blockchain_source: regtest
jm_network: testnet
volumes:
- "joinmarket_directory_node_datadir:/root/.joinmarket"
- "./out/hidden_service_dir:/root/.joinmarket/hidden_service_dir:z"
healthcheck:
test: ["CMD", "supervisorctl", "status"]
interval: 10s
timeout: 10s
retries: 20
start_period: 60s
start_interval: 3s
irc:
container_name: jm_regtest_irc
restart: unless-stopped
image: ghcr.io/ergochat/ergo:v2.15.0@sha256:135cd42c6300d957e0045ee53fbe886e43e1c04bb621391ed7b8940c174d68f3
expose:
- 6667
volumes:
- "irc_datadir:/ircd"
bitcoind:
container_name: jm_regtest_bitcoind
restart: unless-stopped
image: polarlightning/bitcoind:28.0@sha256:ff435d758c89f01823924e057d5d5e4206d350ae69dff5e0dc1bbc9c6a36d010
command:
# rpcauth (user=regtest; password=regtest)
# rpcauth (user=joinmarket; password=joinmarket)
# rpcauth (user=joinmarket2; password=joinmarket2)
# rpcauth (user=joinmarket3; password=joinmarket3)
-rpcauth=regtest:20b58677979ad9d3cf4b78b1d6e85e44$$2ec3e1e1c00c7c58d7aff1d4bf96e4a984ea1af5d676d862fd0faa857a1d4d7c
-rpcauth=joinmarket:260b4c5b1fbd09d75a4aabf90226282f$$76e170af088d43a588992cdd5e7bae2242b03c33aa672cccfd1fb75f9281299e
-rpcauth=joinmarket2:521bf9f4468529d49c0a41f9c9f8fdbf$$63ae94a73d2aa45e7ee756945d9b1e469f9873ce026b815d676a748f777e0b8d
-rpcauth=joinmarket3:85d4beaa74540c3b08f4fef50d74a59e$$3033c779ea4bfd02a1f3403bc4d012f3e6d19b355f74c5e8de1d3439979d5e4b
-datadir=/home/bitcoin/data
-walletdir=/home/bitcoin/walletdata
-regtest=1
-server=1
-port=39388
-rpcport=43782
-rpcbind=0.0.0.0
-rpcallowip=0.0.0.0/0
-whitelist=0.0.0.0/0
-maxmempool=500
-debug=rpc
-logips=0
-networkactive=1
-dnsseed=0
-uacomment=jmdevbitcoindregtest
-printpriority=1
-logtimemicros=1
-zmqpubrawblock=tcp://0.0.0.0:28332
-zmqpubrawtx=tcp://0.0.0.0:28333
-zmqpubhashblock=tcp://0.0.0.0:28334
-dns=0
-listenonion=0
-deprecatedrpc=create_bdb
expose:
- 39388 # P2P
- 43782 # RPC
- 28332 # ZMQ
- 28333 # ZMQ
- 28334 # ZMQ
ports:
- "17782:43782"
volumes:
- "bitcoin_datadir:/home/bitcoin/data"
- "bitcoin_wallet_datadir:/home/bitcoin/walletdata"
healthcheck:
test: [ "CMD", "/entrypoint.sh", "bitcoin-cli", "-chain=regtest", "-rpcport=43782", "-datadir=/home/bitcoin/data", "-getinfo" ]
interval: 10s
timeout: 10s
retries: 20
start_period: 60s
start_interval: 3s
bitcoind_regtest_initializer:
container_name: jm_regtest_bitcoind_initializer
build:
context: ./dockerfile-deps/bitcoin/regtest-initializer
dockerfile: Dockerfile
restart: on-failure
environment:
READY_FILE: /root/.regtest-initializer/btc_fully_synched
RPC_HOST: bitcoind
RPC_PORT: 43782
RPC_USER: regtest
RPC_PASSWORD: regtest
volumes:
- "initializer_datadir:/root/.regtest-initializer"
depends_on:
bitcoind:
condition: service_healthy
nginx:
container_name: jm_regtest_nginx_test_basepath
image: nginx:1.27.4-alpine3.21@sha256:4ff102c5d78d254a6f0da062b3cf39eaf07f01eec0927fd21e219d0af8bc0591
volumes:
- ./dockerfile-deps/nginx:/etc/nginx/templates
ports:
- "8000:80"
extra_hosts:
- "host.docker.internal:host-gateway"
healthcheck:
test: ["CMD-SHELL", "wget --output-document /dev/null http://127.0.0.1:80/health || exit 1"]
interval: 10s
timeout: 10s
retries: 20
start_period: 60s
start_interval: 3s
explorer:
container_name: jm_regtest_explorer
restart: unless-stopped
image: getumbrel/btc-rpc-explorer:v3.4.0@sha256:e85a1fe80919d308b1f80de2dc7174e7b61ec79384d695304fbf259b67b53594
environment:
BTCEXP_HOST: 0.0.0.0
BTCEXP_PORT: 3002
BTCEXP_BITCOIND_HOST: bitcoind
BTCEXP_BITCOIND_PORT: 43782
BTCEXP_BITCOIND_USER: regtest
BTCEXP_BITCOIND_PASS: regtest
BTCEXP_BASIC_AUTH_PASSWORD: joinmarket
BTCEXP_PRIVACY_MODE: 'true'
BTCEXP_NO_RATES: 'true'
BTCEXP_RPC_ALLOWALL: 'true'
ports:
- "3002:3002"
depends_on:
bitcoind:
condition: service_healthy
volumes:
bitcoin_datadir:
bitcoin_wallet_datadir:
initializer_datadir:
joinmarket_datadir:
joinmarket2_datadir:
joinmarket3_datadir:
joinmarket_directory_node_datadir:
irc_datadir: