version: '3.9' services: tor: build: ./tor container_name: tor${SUFFIX} restart: always environment: SUFFIX: ${SUFFIX} volumes: - ${TOR_DATA:?}:/var/lib/tor - ${TOR_CONFIG:?}:/etc/tor/torrc ports: - ${WEB_LOCAL_PORT}:80 - ${THUB_LOCAL_PORT}:3000 - ${LIT_LOCAL_PORT}:8443 bitcoind: image: ruimarinho/bitcoin-core:${BITCOIND_TAG:-24.0.1-alpine@sha256:624b6fb1c282a3db6438ff35fbb9eed6ae260c66ffbb427ae72edd7da6a0ecdc} container_name: btc${SUFFIX} restart: always depends_on: - tor network_mode: service:tor volumes: - ${TOR_DATA:?}:/var/lib/tor:ro - ${BITCOIN_DATA:?}:${GUEST_BITCOIN:?} - ${BITCOIN_CONF:?}:${GUEST_BITCOIN:?}/bitcoin.conf daphne: image: recksato/robosats:${ROBOSATS_TAG:-v0.6.0-alpha@sha256:8cc975ff5942a3fb2a09827b8eaafebea1c851eb3ecf9be1aaac1f238cfa9fc1} container_name: daphne${SUFFIX} restart: always network_mode: service:tor env_file: - ${ROBOSATS_ENVS_FILE} environment: SKIP_COLLECT_STATIC: "true" depends_on: - robosats command: daphne -b 0.0.0.0 -p 9000 robosats.asgi:application redis: image: redis:${REDIS_TAG:-7.2.1-alpine@sha256:7f5a0dfbf379db69dc78434091dce3220e251022e71dcdf36207928cbf9010de} container_name: redis${SUFFIX} restart: always volumes: - redisdata:/data network_mode: service:tor robosats: image: recksato/robosats:${ROBOSATS_TAG:-v0.6.0-alpha@sha256:8cc975ff5942a3fb2a09827b8eaafebea1c851eb3ecf9be1aaac1f238cfa9fc1} container_name: rs${SUFFIX} restart: always environment: LOG_TO_CONSOLE: 1 env_file: - ${ROBOSATS_ENVS_FILE} depends_on: - redis volumes: - ${STATIC}:/usr/src/static network_mode: service:tor command: gunicorn --bind :8000 --max-requests 1000 --max-requests-jitter 200 -w ${GUNICORN_WORKERS} robosats.wsgi:application postgres: image: postgres:${POSTGRES_TAG:-14.2-alpine@sha256:2fb5718f2a23dbac9bd1258e886eee90250a5903785e3136d62dd65e19f34982} container_name: sql${SUFFIX} restart: always environment: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_DB: ${POSTGRES_NAME} network_mode: service:tor volumes: - ${DATABASE}:/var/lib/postgresql/data nginx: image: nginx:${NGINX_TAG:-1.25.2-alpine-slim@sha256:1b0cb433e90260a96528c987ee78b797e842d510473935304a0931536d10f50d} container_name: nginx${SUFFIX} restart: always volumes: - ${STATIC}:/usr/src/static:ro - ${NGINX_CONFD}:/etc/nginx/conf.d:ro - ${WELLKNOWN}:/usr/src/.well-known:ro network_mode: service:tor clean-orders: image: recksato/robosats:${ROBOSATS_TAG:-v0.6.0-alpha@sha256:8cc975ff5942a3fb2a09827b8eaafebea1c851eb3ecf9be1aaac1f238cfa9fc1} restart: always container_name: clord${SUFFIX} command: python3 manage.py clean_orders environment: SKIP_COLLECT_STATIC: "true" env_file: - ${ROBOSATS_ENVS_FILE} network_mode: service:tor follow-invoices: image: recksato/robosats:${ROBOSATS_TAG:-v0.6.0-alpha@sha256:8cc975ff5942a3fb2a09827b8eaafebea1c851eb3ecf9be1aaac1f238cfa9fc1} container_name: invo${SUFFIX} restart: always env_file: - ${ROBOSATS_ENVS_FILE} environment: SKIP_COLLECT_STATIC: "true" command: python3 manage.py follow_invoices network_mode: service:tor telegram-watcher: image: recksato/robosats:${ROBOSATS_TAG:-v0.6.0-alpha@sha256:8cc975ff5942a3fb2a09827b8eaafebea1c851eb3ecf9be1aaac1f238cfa9fc1} container_name: tg${SUFFIX} restart: always environment: SKIP_COLLECT_STATIC: "true" env_file: - ${ROBOSATS_ENVS_FILE} command: python3 manage.py telegram_watcher network_mode: service:tor celery: image: recksato/robosats:${ROBOSATS_TAG:-v0.6.0-alpha@sha256:8cc975ff5942a3fb2a09827b8eaafebea1c851eb3ecf9be1aaac1f238cfa9fc1} container_name: cele${SUFFIX} restart: always env_file: - ${ROBOSATS_ENVS_FILE} environment: SKIP_COLLECT_STATIC: "true" command: celery -A robosats worker --loglevel=WARNING depends_on: - redis network_mode: service:tor celery-beat: image: recksato/robosats:${ROBOSATS_TAG:-v0.6.0-alpha@sha256:8cc975ff5942a3fb2a09827b8eaafebea1c851eb3ecf9be1aaac1f238cfa9fc1} container_name: beat${SUFFIX} restart: always env_file: - ${ROBOSATS_ENVS_FILE} environment: SKIP_COLLECT_STATIC: "true" command: celery -A robosats beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler depends_on: - redis network_mode: service:tor # Example simple backup service (copy/paste to attached storage locations) # backup: # build: ./backup # container_name: bu${SUFFIX} # restart: always # environment: # NETWORK: ${NETWORK} # volumes: # - ${DATABASE}:/running/database:ro # - ${BITCOIN_CONF:?}:/running/bitcoin/bitcoin.conf:ro # - ${LND_DATA}:/running/lnd:ro # - ${LIT_DATA}:/running/lit:ro # - ${STATIC}:/running/static:ro # - ${BU_DIR1}:/backup1 # - ${BU_DIR2}:/backup2 # - ${BU_DIR3}:/backup3 volumes: redisdata: