version: "3"
services:
galoy:
image: us.gcr.io/galoy-org/galoy-app:edge
command:
- "-r"
- "/app/lib/services/tracing.js"
- "lib/servers/graphql-main-server.js"
env_file: ${HOST_PROJECT_PATH:-.}/dev/.env.galoy
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/galoy.yml:/var/yaml/custom.yaml
trigger:
image: us.gcr.io/galoy-org/galoy-app:edge
command:
- "-r"
- "/app/lib/services/tracing.js"
- "lib/servers/trigger.js"
env_file: ${HOST_PROJECT_PATH:-.}/dev/.env.galoy
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/galoy.yml:/var/yaml/custom.yaml
bats-deps:
image: busybox
depends_on:
- galoy
- trigger
- apollo-router
- redis
- mongodb
- oathkeeper
- kratos
- price
- stablesats
- bria
- bitcoind
- bitcoind-signer
- lnd1
e2e-deps:
image: busybox
depends_on:
- apollo-router
- kratos
- price
- price-history
- price-history-migrate
- stablesats
- bria
- redis
- mongodb
- postgres-price-history
- bitcoind
- bitcoind-signer
- lnd1
- lnd2
- lnd-outside-1
- lnd-outside-2
- otel-agent
- oathkeeper
- mailslurper
restart: on-failure:10
integration-deps:
image: busybox
depends_on:
- redis
- mongodb
- bitcoind
- bitcoind-signer
- stablesats
- bria
- lnd1
- lnd2
- lnd-outside-1
- lnd-outside-2
- lnd-outside-3
- otel-agent
restart: on-failure:10
apollo-router:
image: ghcr.io/apollographql/router:v1.25.0
environment:
- APOLLO_ROUTER_SUPERGRAPH_PATH=/repo/dev/apollo-federation/supergraph.graphql
- APOLLO_ROUTER_CONFIG_PATH=/repo/dev/apollo-federation/router.yaml
volumes:
- ./:/repo
otel-agent:
image: otel/opentelemetry-collector-contrib:0.79.0
command: ["--config=/etc/otel-agent-config.yaml"]
environment:
- HONEYCOMB_DATASET=${HONEYCOMB_DATASET}
- HONEYCOMB_API_KEY=${HONEYCOMB_API_KEY}
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/otel-agent-config.yaml:/etc/otel-agent-config.yaml
price:
image: us.gcr.io/galoy-org/price:edge
price-history:
image: us.gcr.io/galoy-org/price-history:edge
command: ./scripts/run-servers-dev.sh
environment:
- DB_HOST=postgres-price-history
- DB_PORT=5432
- DB_USER=galoy-price-usr
- DB_PWD=galoy-price-pwd
- DB_DB=galoy-price-history
- DB_POOL_MIN=1
- DB_POOL_MAX=5
- DB_DEBUG=false
depends_on:
- postgres-price-history
- price-history-migrate
price-history-migrate:
image: us.gcr.io/galoy-org/price-history-migrate:edge
environment:
- DB_HOST=postgres-price-history
- DB_PORT=5432
- DB_USER=galoy-price-usr
- DB_PWD=galoy-price-pwd
- DB_DB=galoy-price-history
- DB_POOL_MIN=1
- DB_POOL_MAX=5
- DB_DEBUG=false
depends_on: [postgres-price-history]
redis:
image: redis:7.0.8
environment:
- ALLOW_EMPTY_PASSWORD=yes
- REDIS_DISABLE_COMMANDS=FLUSHDB,FLUSHALL
mongodb-migrate:
depends_on: [mongodb]
build:
context: .
dockerfile: Dockerfile-migrate
environment:
- MONGODB_ADDRESS=mongodb
mongodb:
image: mongo:${MONGODB_VERSION:-6.0.5}
environment:
- MONGO_INITDB_DATABASE=galoy
postgres-price-history:
image: postgres:14.1
environment:
- POSTGRES_USER=galoy-price-usr
- POSTGRES_PASSWORD=galoy-price-pwd
- POSTGRES_DB=galoy-price-history
bitcoind:
image: lncm/bitcoind:v24.0.1
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/bitcoind/bitcoin.conf:/data/.bitcoin/bitcoin.conf
bitcoind-signer:
image: lncm/bitcoind:v24.0.1
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/bitcoind/bitcoin.conf:/data/.bitcoin/bitcoin.conf
depends_on: [bitcoind]
entrypoint: ["/bin/sh", "-c"]
command:
- |
bitcoind -connect=bitcoind:18444
lnd1:
image: lightninglabs/lnd:v0.16.2-beta
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/lnd/lnd.conf:/root/.lnd/lnd.conf
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.key:/root/.lnd/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.cert:/root/.lnd/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd1.wallet.db:/root/.lnd/wallet.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd1.macaroons.db:/root/.lnd/macaroons.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd1.admin.macaroon:/root/.lnd/admin.macaroon
depends_on: [bitcoind]
entrypoint: ["/bin/sh", "-c"]
command:
- |
mkdir -p /root/.lnd/data/chain/bitcoin/regtest/
cp /root/.lnd/wallet.db /root/.lnd/data/chain/bitcoin/regtest/wallet.db
cp /root/.lnd/macaroons.db /root/.lnd/data/chain/bitcoin/regtest/macaroons.db
cp /root/.lnd/admin.macaroon /root/.lnd/data/chain/bitcoin/regtest/admin.macaroon
/bin/lnd
lnd2:
image: lightninglabs/lnd:v0.16.2-beta
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/lnd/lnd.conf:/root/.lnd/lnd.conf
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.key:/root/.lnd/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.cert:/root/.lnd/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd2.wallet.db:/root/.lnd/wallet.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd2.macaroons.db:/root/.lnd/macaroons.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd2.admin.macaroon:/root/.lnd/admin.macaroon
depends_on: [bitcoind]
entrypoint: ["/bin/sh", "-c"]
command:
- |
mkdir -p /root/.lnd/data/chain/bitcoin/regtest/
cp /root/.lnd/wallet.db /root/.lnd/data/chain/bitcoin/regtest/wallet.db
cp /root/.lnd/macaroons.db /root/.lnd/data/chain/bitcoin/regtest/macaroons.db
cp /root/.lnd/admin.macaroon /root/.lnd/data/chain/bitcoin/regtest/admin.macaroon
/bin/lnd
lnd-outside-1:
image: lightninglabs/lnd:v0.16.2-beta
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/lnd/lnd.conf:/root/.lnd/lnd.conf
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.key:/root/.lnd/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.cert:/root/.lnd/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd-outside-1.wallet.db:/root/.lnd/wallet.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd-outside-1.macaroons.db:/root/.lnd/macaroons.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd-outside-1.admin.macaroon:/root/.lnd/admin.macaroon
entrypoint: ["/bin/sh", "-c"]
command:
- |
mkdir -p /root/.lnd/data/chain/bitcoin/regtest/
cp /root/.lnd/wallet.db /root/.lnd/data/chain/bitcoin/regtest/wallet.db
cp /root/.lnd/macaroons.db /root/.lnd/data/chain/bitcoin/regtest/macaroons.db
cp /root/.lnd/admin.macaroon /root/.lnd/data/chain/bitcoin/regtest/admin.macaroon
/bin/lnd
depends_on: [bitcoind]
lnd-outside-2:
image: lightninglabs/lnd:v0.16.2-beta
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/lnd/lnd.conf:/root/.lnd/lnd.conf
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.key:/root/.lnd/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.cert:/root/.lnd/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd-outside-2.wallet.db:/root/.lnd/wallet.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd-outside-2.macaroons.db:/root/.lnd/macaroons.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd-outside-2.admin.macaroon:/root/.lnd/admin.macaroon
entrypoint: ["/bin/sh", "-c"]
command:
- |
mkdir -p /root/.lnd/data/chain/bitcoin/regtest/
cp /root/.lnd/wallet.db /root/.lnd/data/chain/bitcoin/regtest/wallet.db
cp /root/.lnd/macaroons.db /root/.lnd/data/chain/bitcoin/regtest/macaroons.db
cp /root/.lnd/admin.macaroon /root/.lnd/data/chain/bitcoin/regtest/admin.macaroon
/bin/lnd
depends_on: [bitcoind]
lnd-outside-3:
image: lightninglabs/lnd:v0.16.2-beta
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/lnd/lnd.conf:/root/.lnd/lnd.conf
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.key:/root/.lnd/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.cert:/root/.lnd/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd-outside-3.wallet.db:/root/.lnd/wallet.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd-outside-3.macaroons.db:/root/.lnd/macaroons.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd-outside-3.admin.macaroon:/root/.lnd/admin.macaroon
entrypoint: ["/bin/sh", "-c"]
command:
- |
mkdir -p /root/.lnd/data/chain/bitcoin/regtest/
cp /root/.lnd/wallet.db /root/.lnd/data/chain/bitcoin/regtest/wallet.db
cp /root/.lnd/macaroons.db /root/.lnd/data/chain/bitcoin/regtest/macaroons.db
cp /root/.lnd/admin.macaroon /root/.lnd/data/chain/bitcoin/regtest/admin.macaroon
/bin/lnd
depends_on: [bitcoind]
loopserver:
image: lightninglabs/loopserver:v0.9.52-beta
restart: unless-stopped
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/lnd/lnd.conf:/root/.lnd/lnd.conf
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.key:/root/.lnd/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.cert:/root/.lnd/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/server/regtest:/root/.lnd/data/chain/bitcoin/regtest
depends_on:
- lnd-outside-1
command:
- "daemon"
- "--maxamt=5000000"
- "--lnd.host=lnd-outside-1:10009"
- "--lnd.macaroondir=/root/.lnd/data/chain/bitcoin/regtest"
- "--lnd.tlspath=/root/.lnd/tls.cert"
loopd1:
image: lightninglabs/loop:v0.20.1-beta
restart: unless-stopped
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/lnd/lnd.conf:/root/.lnd/lnd.conf
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.key:/root/.lnd/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.cert:/root/.lnd/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd1.admin.macaroon:/root/.lnd/lnd1.admin.macaroon
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd1-1.macaroons.db:/root/.loop/tmp/macaroons.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd1-1.loop.db:/root/.loop/tmp/loop.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd1-1.tls.key:/root/.loop/tmp/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd1-1.tls.cert:/root/.loop/tmp/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd1-1.loop.macaroon:/root/.loop/tmp/loop.macaroon
depends_on:
- lnd1
- loopserver
environment:
- LOOP_SERVER_INTERNAL_IP=${LOOP_SERVER_INTERNAL_IP}
command: bash -c "
mkdir -p /root/.loop/regtest/ &&
cp /root/.loop/tmp/* /root/.loop/regtest/ &&
loopd\
--network=regtest\
--debuglevel=debug\
--server.host=${LOOP_SERVER_INTERNAL_IP}:11009\
--server.notls --lnd.host=lnd1:10009\
--lnd.macaroonpath=/root/.lnd/lnd1.admin.macaroon\
--lnd.tlspath=/root/.lnd/tls.cert\
--tlsautorefresh\
--restlisten=0.0.0.0:8081\
--rpclisten=0.0.0.0:11010"
loopd2:
image: lightninglabs/loop:v0.20.1-beta
restart: unless-stopped
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/lnd/lnd.conf:/root/.lnd/lnd.conf
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.key:/root/.lnd/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/tls.cert:/root/.lnd/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/regtest/lnd2.admin.macaroon:/root/.lnd/lnd2.admin.macaroon
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd2-1.macaroons.db:/root/.loop/tmp/macaroons.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd2-1.loop.db:/root/.loop/tmp/loop.db
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd2-1.tls.key:/root/.loop/tmp/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd2-1.tls.cert:/root/.loop/tmp/tls.cert
- ${HOST_PROJECT_PATH:-.}/dev/lnd/loop/regtest/loopd2-1.loop.macaroon:/root/.loop/tmp/loop.macaroon
depends_on:
- lnd2
- loopserver
environment:
- LOOP_SERVER_INTERNAL_IP=${LOOP_SERVER_INTERNAL_IP}
command: bash -c "
mkdir -p /root/.loop/regtest/ &&
cp /root/.loop/tmp/* /root/.loop/regtest/ &&
loopd\
--network=regtest\
--debuglevel=debug\
--server.host=${LOOP_SERVER_INTERNAL_IP}:11009\
--server.notls --lnd.host=lnd2:10009\
--lnd.macaroonpath=/root/.lnd/lnd2.admin.macaroon\
--lnd.tlspath=/root/.lnd/tls.cert\
--tlsautorefresh\
--restlisten=0.0.0.0:8081\
--rpclisten=0.0.0.0:11010"
e2e-tests:
image: us.gcr.io/galoy-org/nodejs-concourse
depends_on:
- e2e-deps
command: ["make", "execute-e2e-from-within-container"]
working_dir: /repo
env_file:
- ${TMP_ENV_CI:-${HOST_PROJECT_PATH:-.}/dev/.env.galoy}
volumes:
- ./:/repo
bats-tests:
image: us.gcr.io/galoy-org/rust-concourse
depends_on:
- bats-deps
command: ["make", "execute-bats-from-within-container"]
working_dir: /repo
env_file:
- ${TMP_ENV_CI:-${HOST_PROJECT_PATH:-.}/dev/.env.galoy}
environment:
- GALOY_ENDPOINT=oathkeeper:4455
- HOST_PROJECT_PATH=${PWD}
- COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME}
volumes:
- ./:/repo
- /var/run/docker.sock:/var/run/docker.sock
integration-tests:
image: us.gcr.io/galoy-org/nodejs-concourse
depends_on:
- integration-deps
command: ["make", "execute-integration-from-within-container"]
working_dir: /repo
env_file:
- ${TMP_ENV_CI:-${HOST_PROJECT_PATH:-.}/dev/.env.galoy}
volumes:
- ./:/repo
stablesats:
image: us.gcr.io/galoy-org/stablesats-rs:latest
command: ["stablesats", "run"]
working_dir: /repo/dev
depends_on:
- otel-agent
- redis
restart: on-failure:10
volumes:
- ${HOST_PROJECT_PATH:-.}/:/repo
bria:
image: us.gcr.io/galoy-org/bria:latest
environment:
- PG_CON=postgres://user:password@postgres-bria:5432/pg
- BITCOIND_SIGNER_ENDPOINT=https://bitcoind-signer:18443
command:
- bria
- daemon
- --config
- /repo/dev/bria.yml
- dev
- -x
- tpubDDDDGYiFda8HfJRc2AHFJDxVzzEtBPrKsbh35EaW2UGd5qfzrF2G87ewAgeeRyHEz4iB3kvhAYW1sH6dpLepTkFUzAktumBN8AXeXWE9nd1
- -d
- m/84h/0h/0h
depends_on:
bitcoind-signer:
condition: service_started
otel-agent:
condition: service_started
fulcrum:
condition: service_started
postgres-bria:
condition: service_healthy
restart: on-failure:10
volumes:
- ${HOST_PROJECT_PATH:-.}/:/repo
postgres-bria:
image: postgres:14.1
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=pg
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 5s
timeout: 30s
retries: 5
oathkeeper:
image: oryd/oathkeeper:v0.40.4-distroless
command: serve -c /home/ory/oathkeeper.yml --sqa-opt-out
volumes:
- type: bind
source: ${HOST_PROJECT_PATH:-.}/dev/ory
target: /home/ory
kratos:
image: oryd/kratos:v1.0.0
entrypoint: sh -c
command: '"kratos migrate sql up -y -e && kratos serve -c /home/ory/kratos.yml --watch-courier --sqa-opt-out"'
environment:
DSN: postgres://dbuser:secret@kratos-pg:5432/default?sslmode=disable
links:
- kratos-pg:kratos-pg
volumes:
- type: bind
source: dev/ory
target: /home/ory
kratos-pg:
image: postgres:14.1
expose:
- "5432"
environment:
- POSTGRES_USER=dbuser
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=default
mailslurper:
image: oryd/mailslurper:latest-smtps
fulcrum:
image: cculianu/fulcrum:latest
depends_on: [bitcoind]
volumes:
- ${HOST_PROJECT_PATH:-.}/dev/fulcrum/fulcrum.conf:/fulcrum.conf
- ${HOST_PROJECT_PATH:-.}/dev/fulcrum/tls.key:/tls.key
- ${HOST_PROJECT_PATH:-.}/dev/fulcrum/tls.cert:/tls.cert
environment:
- DATA_DIR=/db
- SSL_CERTFILE=/tls.cert
- SSL_KEYFILE=/tls.key
command: ["Fulcrum", "/fulcrum.conf"]