version: "3.7" services: app_proxy: environment: APP_HOST: $APP_FULCRUM_IP APP_PORT: 3006 app: image: nmfretz/umbrel-fulcrum:1.0.1@sha256:7ebcb84446e55dbbde7711a4ac2d65ca65c55d0092e6640b41ca2d9c4539a3ff depends_on: - fulcrum restart: on-failure environment: ELECTRUM_HIDDEN_SERVICE: "${APP_FULCRUM_RPC_HIDDEN_SERVICE}" ELECTRUM_LOCAL_SERVICE: "${DEVICE_DOMAIN_NAME}" ELECTRUM_HOST: "${APP_FULCRUM_NODE_IP}" ELECTRUM_PUBLIC_CONNECTION_PORT: ${APP_FULCRUM_NODE_PORT} BITCOIN_HOST: "${APP_BITCOIN_NODE_IP}" RPC_USER: "${APP_BITCOIN_RPC_USER}" RPC_PASSWORD: "${APP_BITCOIN_RPC_PASS}" RPC_PORT: "${APP_BITCOIN_RPC_PORT}" volumes: - "${APP_DATA_DIR}/data/fulcrum-logs:/fulcrum-logs" networks: default: ipv4_address: $APP_FULCRUM_IP fulcrum: image: cculianu/fulcrum:v2.1.0@sha256:71cb19ce9f8318edae1b581a793588c98f55f2f28c12e17327c478ed963ef4e3 init: true # Положитесь на стандартный SIGTERM Docker; Fulcrum считает SIGTERM/SIGINT/SIGQUIT изящным # Щедрый льготный период предотвращает SIGKILL во время checkpoint/flush при выходе stop_grace_period: 5m restart: on-failure user: "1000:1000" environment: TCP: 0.0.0.0:${APP_FULCRUM_NODE_PORT} ADMIN: 0.0.0.0:${APP_FULCRUM_ADMIN_PORT} BITCOIND: ${APP_BITCOIN_NODE_IP}:${APP_BITCOIN_RPC_PORT} RPCUSER: ${APP_BITCOIN_RPC_USER} RPCPASSWORD: ${APP_BITCOIN_RPC_PASS} PEERING: "false" ANNOUNCE: "false" DATA_DIR: /data # Exec Fulcrum как PID1, поэтому он получает SIGTERM напрямую; FIFO+tee зеркально отображает вывод в журналы докера и /logs/fulcrum.log # rm -f делает создание FIFO идемпотентным в циклах restarts/crash command: > sh -c 'rm -f /tmp/fulcrum.pipe; mkfifo /tmp/fulcrum.pipe; tee -a /logs/fulcrum.log < /tmp/fulcrum.pipe & exec Fulcrum -D /data _ENV_ > /tmp/fulcrum.pipe 2>&1' volumes: - "${APP_DATA_DIR}/data/fulcrum:/data" - "${APP_DATA_DIR}/data/fulcrum-logs:/logs" ports: - "${APP_FULCRUM_NODE_PORT}:${APP_FULCRUM_NODE_PORT}" networks: default: ipv4_address: $APP_FULCRUM_NODE_IP tor: image: getumbrel/tor:0.4.7.8@sha256:2ace83f22501f58857fa9b403009f595137fa2e7986c4fda79d82a8119072b6a user: "1000:1000" restart: on-failure volumes: - ${APP_DATA_DIR}/torrc:/etc/tor/torrc:ro - ${TOR_DATA_DIR}:/data environment: HOME: "/tmp"