services: app: build: . container_name: my-network-app restart: unless-stopped ports: - "8000:8000" volumes: - ${STORAGE_PATH:-./storage}:/app/storage - ${DOCKER_SOCK_PATH:-/var/run/docker.sock}:/var/run/docker.sock - ./logs:/app/logs - ./config/keys:/app/keys:ro environment: - DATABASE_URL=${DATABASE_URL} - REDIS_URL=${REDIS_URL} - NODE_ID=${NODE_ID} - NODE_TYPE=${NODE_TYPE} - NODE_VERSION=${NODE_VERSION} - NETWORK_MODE=${NETWORK_MODE} - ALLOW_INCOMING_CONNECTIONS=${ALLOW_INCOMING_CONNECTIONS} - SECRET_KEY=${SECRET_KEY} - JWT_SECRET_KEY=${JWT_SECRET_KEY} - ENCRYPTION_KEY=${ENCRYPTION_KEY} - STORAGE_PATH=/app/storage - API_HOST=${API_HOST} - API_PORT=${API_PORT} - DOCKER_SOCK_PATH=/var/run/docker.sock - NODE_PRIVATE_KEY_PATH=/app/keys/node_private_key - NODE_PUBLIC_KEY_PATH=/app/keys/node_public_key - NODE_PUBLIC_KEY_HEX=${NODE_PUBLIC_KEY_HEX} - TELEGRAM_API_KEY=${TELEGRAM_API_KEY} - CLIENT_TELEGRAM_API_KEY=${CLIENT_TELEGRAM_API_KEY} - LOG_LEVEL=${LOG_LEVEL} - LOG_PATH=/app/logs - BOOTSTRAP_CONFIG=${BOOTSTRAP_CONFIG} - MAX_PEER_CONNECTIONS=${MAX_PEER_CONNECTIONS} - SYNC_INTERVAL=${SYNC_INTERVAL} - CONVERT_MAX_PARALLEL=${CONVERT_MAX_PARALLEL} - CONVERT_TIMEOUT=${CONVERT_TIMEOUT} depends_on: - postgres - redis networks: - my-network postgres: image: postgres:15-alpine container_name: my-network-postgres restart: unless-stopped environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data - ./init_db.sql:/docker-entrypoint-initdb.d/init_db.sql networks: - my-network redis: image: redis:7-alpine container_name: my-network-redis restart: unless-stopped command: redis-server --appendonly yes volumes: - redis_data:/data networks: - my-network volumes: postgres_data: redis_data: networks: my-network: driver: bridge