services:
bitcoin:
image: bitcoin/bitcoin:27.0
container_name: bitcoin-regtest
command: [
"bitcoind",
"-printtoconsole",
"-regtest=1",
"-fallbackfee=0.0002",
"-rpcallowip=0.0.0.0/0",
"-rpcbind=0.0.0.0:18443",
"-rpcuser=bitcoin",
"-rpcpassword=bitcoin123",
"-zmqpubrawblock=tcp://0.0.0.0:28332",
"-zmqpubrawtx=tcp://0.0.0.0:28333",
"-txindex=1",
"-loglevel=info"
]
ports:
- "18443:18443" - "18444:18444" - "28332:28332" - "28333:28333" volumes:
- lnurl-balancer_bitcoin_data:/home/bitcoin/.bitcoin
networks:
- lightning_network
healthcheck:
test: ["CMD", "bitcoin-cli", "-regtest", "-rpcuser=bitcoin", "-rpcpassword=bitcoin123", "-rpcconnect=127.0.0.1", "-rpcport=18443", "getblockchaininfo"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
setup:
build: ./setup
container_name: setup
depends_on:
bitcoin:
condition: service_healthy
cln:
condition: service_healthy
lnd:
condition: service_healthy
postgres:
condition: service_healthy
mysql:
condition: service_healthy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- shared:/shared
networks:
- lightning_network
- services
restart: "no"
healthcheck:
test: ["CMD", "test", "-f", "/tmp/setup_complete"]
interval: 5s
timeout: 3s
retries: 60
start_period: 10s
cln:
build: ./cln
container_name: cln-regtest
hostname: "${CLN_HOSTNAME}"
environment:
LIGHTNINGD_NETWORK: regtest
CLN_HOSTNAME: "${CLN_HOSTNAME}"
CLN_PORT: "${CLN_PORT}"
ports:
- "9735:9735" - "${CLN_PORT}:${CLN_PORT}" volumes:
- lnurl-balancer_cln_data:/root/.lightning
depends_on:
bitcoin:
condition: service_healthy
networks:
- lightning_network
- services
restart: unless-stopped
healthcheck:
test: ["CMD", "lightning-cli", "--regtest", "getinfo"]
interval: 5s
timeout: 3s
retries: 12
start_period: 30s
lnd:
build: ./lnd
container_name: lnd-regtest
hostname: "${LND_HOSTNAME}"
environment:
LND_HOSTNAME: "${LND_HOSTNAME}"
LND_PORT: "${LND_PORT}"
ports:
- "${LND_PORT}:${LND_PORT}" - "8080:8080" - "9734:9734" volumes:
- lnurl-balancer_lnd_data:/root/.lnd
depends_on:
bitcoin:
condition: service_healthy
networks:
- lightning_network
- services
restart: unless-stopped
healthcheck:
test: ["CMD", "sh", "-c", "lncli --network=regtest getinfo >/dev/null 2>&1 || (echo 'password123' | lncli --network=regtest create --stdin 2>/dev/null || echo 'password123' | lncli --network=regtest unlock --stdin 2>/dev/null)"]
interval: 5s
timeout: 3s
retries: 12
start_period: 30s
postgres:
build: ./postgres
container_name: postgres-db
hostname: "${POSTGRES_HOSTNAME}"
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_LOG_MIN_MESSAGES: info
POSTGRES_HOSTNAME: "${POSTGRES_HOSTNAME}"
volumes:
- lnurl-balancer_postgres_data:/var/lib/postgresql/data
ports:
- "${POSTGRES_PORT}:5432"
networks:
- services
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 3s
retries: 5
start_period: 10s
mysql:
build: ./mysql
container_name: mysql-db
hostname: "${MYSQL_HOSTNAME}"
environment:
MYSQL_ROOT_PASSWORD: mysql
MYSQL_HOSTNAME: "${MYSQL_HOSTNAME}"
volumes:
- lnurl-balancer_mysql_data:/var/lib/mysql
ports:
- "${MYSQL_PORT}:3306"
networks:
- services
restart: unless-stopped
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pmysql"]
interval: 5s
timeout: 3s
retries: 5
start_period: 10s
credentials-server:
build: ./credentials-server
container_name: credentials-server
hostname: "${CREDENTIALS_SERVER_HOSTNAME}"
volumes:
- shared:/usr/share/nginx/html
ports:
- "${CREDENTIALS_SERVER_PORT}:8888"
networks:
- services
depends_on:
setup:
condition: service_healthy
restart: unless-stopped
entrypoint: ["nginx"]
command: ["-g", "daemon off;"]
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8888/credentials.tar.gz"]
interval: 5s
timeout: 3s
retries: 5
start_period: 10s
volumes:
shared:
external: false
lnurl-balancer_bitcoin_data:
external: false
lnurl-balancer_cln_data:
external: false
lnurl-balancer_lnd_data:
external: false
lnurl-balancer_postgres_data:
external: false
lnurl-balancer_mysql_data:
external: false
networks:
lightning_network:
driver: bridge
services:
name: $SERVICES_NETWORK_NAME
driver: bridge