2021-10-20 19:57:11 +00:00
|
|
|
version: "3"
|
|
|
|
services:
|
|
|
|
db:
|
|
|
|
container_name: db
|
2024-03-08 19:11:15 +00:00
|
|
|
build: ./docker/db
|
2024-03-07 16:19:37 +00:00
|
|
|
restart: unless-stopped
|
2024-03-07 01:04:55 +00:00
|
|
|
healthcheck:
|
2024-03-08 03:24:42 +00:00
|
|
|
test: ["CMD-SHELL", "PGPASSWORD=${POSTGRES_PASSWORD} psql -U ${POSTGRES_USER} ${POSTGRES_DB} -c 'SELECT 1 FROM users LIMIT 1'"]
|
2024-03-07 19:18:23 +00:00
|
|
|
interval: 10s
|
|
|
|
timeout: 10s
|
|
|
|
retries: 10
|
|
|
|
start_period: 1m
|
2021-10-20 19:57:11 +00:00
|
|
|
expose:
|
|
|
|
- "5432"
|
|
|
|
ports:
|
|
|
|
- "5431:5432"
|
|
|
|
env_file:
|
2024-03-08 19:11:15 +00:00
|
|
|
- .env.sndev
|
2023-06-13 01:22:10 +00:00
|
|
|
volumes:
|
2024-03-08 19:11:15 +00:00
|
|
|
- ./docker/db/seed.sql:/docker-entrypoint-initdb.d/seed.sql
|
2023-06-13 01:22:10 +00:00
|
|
|
- db:/var/lib/postgresql/data
|
2021-10-20 19:57:11 +00:00
|
|
|
app:
|
|
|
|
container_name: app
|
2024-03-09 02:07:43 +00:00
|
|
|
build:
|
|
|
|
context: ./
|
|
|
|
args:
|
|
|
|
- UID=${CURRENT_UID}
|
|
|
|
- GID=${CURRENT_GID}
|
2024-03-07 16:19:37 +00:00
|
|
|
restart: unless-stopped
|
2023-04-25 21:30:28 +00:00
|
|
|
healthcheck:
|
|
|
|
test: ["CMD", "curl", "-f", "http://localhost:3000"]
|
|
|
|
interval: 10s
|
|
|
|
timeout: 10s
|
|
|
|
retries: 10
|
2024-03-07 19:18:23 +00:00
|
|
|
start_period: 1m
|
2021-10-20 19:57:11 +00:00
|
|
|
depends_on:
|
2024-03-06 23:38:34 +00:00
|
|
|
db:
|
|
|
|
condition: service_healthy
|
2024-03-07 01:04:55 +00:00
|
|
|
restart: true
|
|
|
|
opensearch:
|
|
|
|
condition: service_healthy
|
|
|
|
restart: true
|
2024-03-10 05:47:32 +00:00
|
|
|
sn_lnd:
|
|
|
|
condition: service_healthy
|
|
|
|
restart: true
|
2021-10-20 19:57:11 +00:00
|
|
|
env_file:
|
2024-03-08 19:11:15 +00:00
|
|
|
- .env.sndev
|
2024-03-06 23:38:34 +00:00
|
|
|
expose:
|
|
|
|
- "3000"
|
2021-10-20 19:57:11 +00:00
|
|
|
ports:
|
|
|
|
- "3000:3000"
|
|
|
|
volumes:
|
|
|
|
- ./:/app
|
|
|
|
links:
|
2022-10-06 20:33:18 +00:00
|
|
|
- db
|
2023-09-24 23:24:04 +00:00
|
|
|
- opensearch
|
2024-03-08 03:24:42 +00:00
|
|
|
- sn_lnd
|
2022-10-06 20:33:18 +00:00
|
|
|
worker:
|
|
|
|
container_name: worker
|
2024-03-09 02:07:43 +00:00
|
|
|
build:
|
|
|
|
context: ./worker
|
|
|
|
args:
|
|
|
|
- UID=${CURRENT_UID}
|
|
|
|
- GID=${CURRENT_GID}
|
2024-03-07 16:19:37 +00:00
|
|
|
restart: unless-stopped
|
2022-10-06 20:33:18 +00:00
|
|
|
depends_on:
|
2023-04-25 21:30:28 +00:00
|
|
|
db:
|
2024-03-06 23:38:34 +00:00
|
|
|
condition: service_healthy
|
2024-03-07 01:04:55 +00:00
|
|
|
restart: true
|
2023-04-25 21:30:28 +00:00
|
|
|
app:
|
|
|
|
condition: service_healthy
|
2024-03-07 01:04:55 +00:00
|
|
|
restart: true
|
2024-03-06 23:38:34 +00:00
|
|
|
opensearch:
|
|
|
|
condition: service_healthy
|
2024-03-07 01:04:55 +00:00
|
|
|
restart: true
|
2024-03-10 05:47:32 +00:00
|
|
|
sn_lnd:
|
|
|
|
condition: service_healthy
|
|
|
|
restart: true
|
2022-10-06 20:33:18 +00:00
|
|
|
env_file:
|
2024-03-08 19:11:15 +00:00
|
|
|
- .env.sndev
|
2022-10-06 20:33:18 +00:00
|
|
|
volumes:
|
|
|
|
- ./:/app
|
|
|
|
links:
|
|
|
|
- db
|
2023-09-24 23:24:04 +00:00
|
|
|
- app
|
|
|
|
- opensearch
|
2024-03-08 03:24:42 +00:00
|
|
|
- sn_lnd
|
2022-10-06 20:33:18 +00:00
|
|
|
entrypoint: ["/bin/sh", "-c"]
|
2023-04-25 21:30:28 +00:00
|
|
|
command:
|
2024-03-06 23:38:34 +00:00
|
|
|
- npm run worker:dev
|
2023-07-13 00:10:01 +00:00
|
|
|
imgproxy:
|
|
|
|
container_name: imgproxy
|
|
|
|
image: darthsim/imgproxy:v3.18.1
|
|
|
|
healthcheck:
|
|
|
|
test: [ "CMD", "imgproxy", "health" ]
|
|
|
|
interval: 10s
|
2024-03-07 19:18:23 +00:00
|
|
|
timeout: 10s
|
|
|
|
retries: 10
|
|
|
|
start_period: 1m
|
2024-03-07 16:19:37 +00:00
|
|
|
restart: unless-stopped
|
2023-07-13 00:10:01 +00:00
|
|
|
env_file:
|
2024-03-08 19:11:15 +00:00
|
|
|
- .env.sndev
|
2023-07-13 00:10:01 +00:00
|
|
|
ports:
|
|
|
|
- "3001:8080"
|
|
|
|
links:
|
|
|
|
- app
|
2023-09-24 23:24:04 +00:00
|
|
|
opensearch:
|
2024-03-11 00:44:02 +00:00
|
|
|
image: opensearchproject/opensearch:2.12.0
|
2023-09-24 23:24:04 +00:00
|
|
|
container_name: opensearch
|
2024-03-06 23:38:34 +00:00
|
|
|
healthcheck:
|
2024-03-08 03:24:42 +00:00
|
|
|
test: ["CMD-SHELL", "curl -ku admin:${OPENSEARCH_INITIAL_ADMIN_PASSWORD} --silent --fail localhost:9200/_cluster/health || exit 1"]
|
2024-03-06 23:38:34 +00:00
|
|
|
interval: 10s
|
|
|
|
timeout: 10s
|
|
|
|
retries: 10
|
2024-03-07 19:18:23 +00:00
|
|
|
start_period: 1m
|
2024-03-07 16:19:37 +00:00
|
|
|
restart: unless-stopped
|
2024-03-08 03:24:42 +00:00
|
|
|
env_file:
|
2024-03-08 19:11:15 +00:00
|
|
|
- .env.sndev
|
2023-09-24 23:24:04 +00:00
|
|
|
environment:
|
2024-03-07 22:39:50 +00:00
|
|
|
- OPENSEARCH_INITIAL_ADMIN_PASSWORD=mVchg1T5oA9wudUh
|
2023-09-24 23:24:04 +00:00
|
|
|
ports:
|
|
|
|
- 9200:9200 # REST API
|
|
|
|
- 9600:9600 # Performance Analyzer
|
|
|
|
volumes:
|
|
|
|
- os:/usr/share/opensearch/data
|
|
|
|
command: >
|
|
|
|
bash -c '
|
|
|
|
set -m
|
|
|
|
/usr/share/opensearch/opensearch-docker-entrypoint.sh &
|
2024-03-08 03:24:42 +00:00
|
|
|
until curl -sS "http://localhost:9200/_cat/health?h=status" -ku admin:${OPENSEARCH_INITIAL_ADMIN_PASSWORD} | grep -q "green\|yellow"; do
|
2023-09-24 23:24:04 +00:00
|
|
|
echo "Waiting for OpenSearch to start..."
|
|
|
|
sleep 1
|
|
|
|
done
|
|
|
|
echo "OpenSearch started."
|
2024-03-08 03:24:42 +00:00
|
|
|
curl -X PUT "http://localhost:9200/item" -ku admin:${OPENSEARCH_INITIAL_ADMIN_PASSWORD}
|
2023-09-24 23:24:04 +00:00
|
|
|
echo "OpenSearch index created."
|
|
|
|
fg
|
|
|
|
'
|
|
|
|
os-dashboard:
|
|
|
|
image: opensearchproject/opensearch-dashboards:latest
|
|
|
|
container_name: os-dashboard
|
2024-03-07 16:19:37 +00:00
|
|
|
restart: unless-stopped
|
2024-03-07 01:04:55 +00:00
|
|
|
depends_on:
|
|
|
|
opensearch:
|
|
|
|
condition: service_healthy
|
|
|
|
restart: true
|
2024-03-08 03:24:42 +00:00
|
|
|
env_file:
|
2024-03-08 19:11:15 +00:00
|
|
|
- .env.sndev
|
2023-09-24 23:24:04 +00:00
|
|
|
environment:
|
|
|
|
- opensearch.ssl.verificationMode=none
|
|
|
|
- OPENSEARCH_HOSTS=http://opensearch:9200
|
2024-03-08 03:24:42 +00:00
|
|
|
- server.ssl.enabled=false
|
2023-09-24 23:24:04 +00:00
|
|
|
ports:
|
|
|
|
- 5601:5601
|
|
|
|
expose:
|
|
|
|
- "5601"
|
|
|
|
links:
|
|
|
|
- opensearch
|
2024-03-08 03:24:42 +00:00
|
|
|
bitcoin:
|
|
|
|
image: polarlightning/bitcoind:26.0
|
|
|
|
container_name: bitcoin
|
|
|
|
restart: unless-stopped
|
|
|
|
healthcheck:
|
2024-03-10 05:47:32 +00:00
|
|
|
test: ["CMD-SHELL", "bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} getblockchaininfo"]
|
2024-03-08 03:24:42 +00:00
|
|
|
interval: 10s
|
|
|
|
timeout: 10s
|
|
|
|
retries: 10
|
|
|
|
start_period: 1m
|
|
|
|
command:
|
|
|
|
- 'bitcoind'
|
|
|
|
- '-server=1'
|
|
|
|
- '-regtest=1'
|
|
|
|
- '-rpcauth=${RPC_USER}:${RPC_AUTH}'
|
|
|
|
- '-debug=1'
|
|
|
|
- '-zmqpubrawblock=tcp://0.0.0.0:${ZMQ_BLOCK_PORT}'
|
|
|
|
- '-zmqpubrawtx=tcp://0.0.0.0:${ZMQ_TX_PORT}'
|
|
|
|
- '-txindex=1'
|
|
|
|
- '-dnsseed=0'
|
|
|
|
- '-upnp=0'
|
|
|
|
- '-rpcbind=0.0.0.0'
|
|
|
|
- '-rpcallowip=0.0.0.0/0'
|
|
|
|
- '-rpcport=${RPC_PORT}'
|
|
|
|
- '-rest'
|
|
|
|
- '-listen=1'
|
|
|
|
- '-listenonion=0'
|
|
|
|
- '-fallbackfee=0.0002'
|
|
|
|
- '-blockfilterindex=1'
|
|
|
|
- '-peerblockfilters=1'
|
|
|
|
expose:
|
|
|
|
- "${RPC_PORT}"
|
|
|
|
- "${P2P_PORT}"
|
|
|
|
- "${ZMQ_BLOCK_PORT}"
|
|
|
|
- "${ZMQ_TX_PORT}"
|
|
|
|
volumes:
|
|
|
|
- bitcoin:/home/bitcoin/.bitcoin
|
2024-03-09 21:40:00 +00:00
|
|
|
labels:
|
|
|
|
ofelia.enabled: "true"
|
2024-03-10 05:47:32 +00:00
|
|
|
ofelia.job-exec.minecron.schedule: "@every 1m"
|
2024-03-09 21:40:00 +00:00
|
|
|
ofelia.job-exec.minecron.command: >
|
|
|
|
bash -c '
|
2024-03-10 05:47:32 +00:00
|
|
|
blockcount=$$(bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} getblockcount 2>/dev/null)
|
|
|
|
if (( blockcount <= 0 )); then
|
|
|
|
echo "Mining 10 blocks to sn_lnd and stacker_lnd..."
|
|
|
|
bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 100 ${LND_ADDR}
|
|
|
|
bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 100 ${STACKER_LND_ADDR}
|
|
|
|
else
|
|
|
|
echo "Mining a block to sn_lnd... ${LND_ADDR}"
|
|
|
|
bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 1 ${LND_ADDR}
|
|
|
|
echo "Mining a block to stacker_lnd... ${STACKER_LND_ADDR}"
|
|
|
|
bitcoin-cli -chain=regtest -rpcport=${RPC_PORT} -rpcuser=${RPC_USER} -rpcpassword=${RPC_PASS} generatetoaddress 1 ${STACKER_LND_ADDR}
|
|
|
|
fi
|
|
|
|
'
|
2024-03-08 03:24:42 +00:00
|
|
|
sn_lnd:
|
2024-03-09 00:40:10 +00:00
|
|
|
build:
|
|
|
|
context: ./docker/lnd
|
|
|
|
args:
|
|
|
|
- LN_NODE_FOR=sn
|
2024-03-08 03:24:42 +00:00
|
|
|
container_name: sn_lnd
|
|
|
|
restart: unless-stopped
|
|
|
|
healthcheck:
|
2024-03-10 05:47:32 +00:00
|
|
|
test: ["CMD-SHELL", "lncli", "getinfo"]
|
2024-03-08 03:24:42 +00:00
|
|
|
interval: 10s
|
|
|
|
timeout: 10s
|
|
|
|
retries: 10
|
|
|
|
start_period: 1m
|
|
|
|
depends_on:
|
|
|
|
bitcoin:
|
|
|
|
condition: service_healthy
|
|
|
|
restart: true
|
|
|
|
env_file:
|
2024-03-08 19:11:15 +00:00
|
|
|
- .env.sndev
|
2024-03-08 03:24:42 +00:00
|
|
|
command:
|
|
|
|
- 'lnd'
|
|
|
|
- '--noseedbackup'
|
|
|
|
- '--trickledelay=5000'
|
|
|
|
- '--alias=sn_lnd'
|
|
|
|
- '--externalip=sn_lnd'
|
|
|
|
- '--tlsextradomain=sn_lnd'
|
|
|
|
- '--tlsextradomain=host.docker.internal'
|
|
|
|
- '--listen=0.0.0.0:${LND_P2P_PORT}'
|
|
|
|
- '--rpclisten=0.0.0.0:${LND_GRPC_PORT}'
|
|
|
|
- '--restlisten=0.0.0.0:${LND_REST_PORT}'
|
|
|
|
- '--bitcoin.active'
|
|
|
|
- '--bitcoin.regtest'
|
|
|
|
- '--bitcoin.node=bitcoind'
|
|
|
|
- '--bitcoind.rpchost=bitcoin'
|
|
|
|
- '--bitcoind.rpcuser=${RPC_USER}'
|
|
|
|
- '--bitcoind.rpcpass=${RPC_PASS}'
|
|
|
|
- '--bitcoind.zmqpubrawblock=tcp://bitcoin:${ZMQ_BLOCK_PORT}'
|
|
|
|
- '--bitcoind.zmqpubrawtx=tcp://bitcoin:${ZMQ_TX_PORT}'
|
2024-03-09 00:40:10 +00:00
|
|
|
- '--protocol.wumbo-channels'
|
|
|
|
- '--maxchansize=1000000000'
|
|
|
|
- '--allow-circular-route'
|
2024-03-10 18:29:21 +00:00
|
|
|
- '--bitcoin.defaultchanconfs=1'
|
2024-03-10 05:47:32 +00:00
|
|
|
- '--maxpendingchannels=10'
|
2024-03-08 03:24:42 +00:00
|
|
|
expose:
|
|
|
|
- "${LND_P2P_PORT}"
|
|
|
|
ports:
|
|
|
|
- "${LND_REST_PORT}:${LND_REST_PORT}"
|
|
|
|
- "${LND_GRPC_PORT}:${LND_GRPC_PORT}"
|
|
|
|
volumes:
|
|
|
|
- sn_lnd:/home/lnd/.lnd
|
2024-03-10 05:47:32 +00:00
|
|
|
labels:
|
|
|
|
ofelia.enabled: "true"
|
|
|
|
ofelia.job-exec.sn_channel_cron.schedule: "@every 1m"
|
|
|
|
ofelia.job-exec.sn_channel_cron.command: >
|
|
|
|
su lnd -c bash -c "
|
2024-03-10 18:29:21 +00:00
|
|
|
if [ $$(lncli getinfo | jq '.num_active_channels + .num_pending_channels') -ge 3 ]; then
|
2024-03-10 05:47:32 +00:00
|
|
|
exit 0
|
|
|
|
else
|
2024-03-10 18:29:21 +00:00
|
|
|
lncli openchannel --node_key=$STACKER_LND_PUBKEY --connect stacker_lnd:9735 --sat_per_vbyte 1 \\
|
|
|
|
--min_confs 0 --local_amt=1000000000 --push_amt=500000000
|
2024-03-10 05:47:32 +00:00
|
|
|
fi
|
|
|
|
"
|
2024-03-08 03:24:42 +00:00
|
|
|
stacker_lnd:
|
2024-03-09 00:40:10 +00:00
|
|
|
build:
|
|
|
|
context: ./docker/lnd
|
|
|
|
args:
|
|
|
|
- LN_NODE_FOR=stacker
|
2024-03-08 03:24:42 +00:00
|
|
|
container_name: stacker_lnd
|
|
|
|
restart: unless-stopped
|
|
|
|
healthcheck:
|
2024-03-10 05:47:32 +00:00
|
|
|
test: ["CMD-SHELL", "lncli", "getinfo"]
|
2024-03-08 03:24:42 +00:00
|
|
|
interval: 10s
|
|
|
|
timeout: 10s
|
|
|
|
retries: 10
|
|
|
|
start_period: 1m
|
|
|
|
depends_on:
|
|
|
|
bitcoin:
|
|
|
|
condition: service_healthy
|
|
|
|
restart: true
|
|
|
|
env_file:
|
2024-03-08 19:11:15 +00:00
|
|
|
- .env.sndev
|
2024-03-08 03:24:42 +00:00
|
|
|
command:
|
|
|
|
- 'lnd'
|
|
|
|
- '--noseedbackup'
|
|
|
|
- '--trickledelay=5000'
|
2024-03-08 19:11:15 +00:00
|
|
|
- '--alias=stacker_lnd'
|
|
|
|
- '--externalip=stacker_lnd'
|
|
|
|
- '--tlsextradomain=stacker_lnd'
|
2024-03-08 03:24:42 +00:00
|
|
|
- '--tlsextradomain=host.docker.internal'
|
2024-03-09 00:40:10 +00:00
|
|
|
- '--listen=0.0.0.0:${LND_P2P_PORT}'
|
|
|
|
- '--rpclisten=0.0.0.0:${LND_GRPC_PORT}'
|
|
|
|
- '--restlisten=0.0.0.0:${LND_REST_PORT}'
|
2024-03-08 03:24:42 +00:00
|
|
|
- '--bitcoin.active'
|
|
|
|
- '--bitcoin.regtest'
|
|
|
|
- '--bitcoin.node=bitcoind'
|
|
|
|
- '--bitcoind.rpchost=bitcoin'
|
|
|
|
- '--bitcoind.rpcuser=${RPC_USER}'
|
|
|
|
- '--bitcoind.rpcpass=${RPC_PASS}'
|
|
|
|
- '--bitcoind.zmqpubrawblock=tcp://bitcoin:${ZMQ_BLOCK_PORT}'
|
|
|
|
- '--bitcoind.zmqpubrawtx=tcp://bitcoin:${ZMQ_TX_PORT}'
|
2024-03-09 00:40:10 +00:00
|
|
|
- '--protocol.wumbo-channels'
|
|
|
|
- '--maxchansize=1000000000'
|
|
|
|
- '--allow-circular-route'
|
2024-03-10 18:29:21 +00:00
|
|
|
- '--bitcoin.defaultchanconfs=1'
|
2024-03-10 05:47:32 +00:00
|
|
|
- '--maxpendingchannels=10'
|
2024-03-08 03:24:42 +00:00
|
|
|
expose:
|
2024-03-09 00:40:10 +00:00
|
|
|
- "${LND_P2P_PORT}"
|
2024-03-08 03:24:42 +00:00
|
|
|
ports:
|
2024-03-09 00:40:10 +00:00
|
|
|
- "${STACKER_LND_REST_PORT}:${LND_REST_PORT}"
|
|
|
|
- "${STACKER_LND_GRPC_PORT}:${LND_GRPC_PORT}"
|
2024-03-08 19:11:15 +00:00
|
|
|
volumes:
|
|
|
|
- stacker_lnd:/home/lnd/.lnd
|
2024-03-10 05:47:32 +00:00
|
|
|
labels:
|
|
|
|
ofelia.enabled: "true"
|
|
|
|
ofelia.job-exec.stacker_channel_cron.schedule: "@every 1m"
|
|
|
|
ofelia.job-exec.stacker_channel_cron.command: >
|
|
|
|
su lnd -c bash -c "
|
2024-03-10 18:29:21 +00:00
|
|
|
if [ $$(lncli getinfo | jq '.num_active_channels + .num_pending_channels') -ge 3 ]; then
|
2024-03-10 05:47:32 +00:00
|
|
|
exit 0
|
|
|
|
else
|
2024-03-10 18:29:21 +00:00
|
|
|
lncli openchannel --node_key=$LND_PUBKEY --connect sn_lnd:9735 --sat_per_vbyte 1 \\
|
|
|
|
--min_confs 0 --local_amt=1000000000 --push_amt=500000000
|
2024-03-10 05:47:32 +00:00
|
|
|
fi
|
|
|
|
"
|
2024-03-09 21:40:00 +00:00
|
|
|
channdler:
|
|
|
|
image: mcuadros/ofelia:latest
|
|
|
|
container_name: channdler
|
|
|
|
depends_on:
|
|
|
|
- bitcoin
|
2024-03-10 05:47:32 +00:00
|
|
|
- sn_lnd
|
|
|
|
- stacker_lnd
|
2024-03-09 21:40:00 +00:00
|
|
|
restart: unless-stopped
|
|
|
|
command: daemon --docker -f label=com.docker.compose.project=${COMPOSE_PROJECT_NAME}
|
|
|
|
volumes:
|
|
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
2023-06-13 01:22:10 +00:00
|
|
|
volumes:
|
2023-09-24 23:24:04 +00:00
|
|
|
db:
|
|
|
|
os:
|
2024-03-08 03:24:42 +00:00
|
|
|
bitcoin:
|
|
|
|
sn_lnd:
|
2024-03-08 19:11:15 +00:00
|
|
|
stacker_lnd:
|