services: # ================================ # NestJS API Backend # ================================ api: build: context: . dockerfile: Dockerfile container_name: goa-gel-api restart: on-failure:10 ports: - "3001:3001" environment: - NODE_ENV=production - PORT=3001 - DATABASE_HOST=104.211.94.205 - DATABASE_PORT=5432 - DATABASE_NAME=goa_gel_platform - DATABASE_USER=psqladmin - DATABASE_PASSWORD=mD1tX9gDB6O6 - REDIS_HOST=redis - REDIS_PORT=6379 - MINIO_ENDPOINT=104.211.94.205 - MINIO_PORT=9000 - MINIO_ACCESS_KEY=admin - MINIO_SECRET_KEY=7x6sV7WsYjOa - MINIO_BUCKET_DOCUMENTS=goa-gel-documents - BESU_RPC_URL=http://104.211.94.205:8545 - BESU_CHAIN_ID=1337 - BESU_NETWORK_ID=2024 - CONTRACT_ADDRESS_LICENSE_NFT=${CONTRACT_ADDRESS_LICENSE_NFT:-} - CONTRACT_ADDRESS_APPROVAL_MANAGER=${CONTRACT_ADDRESS_APPROVAL_MANAGER:-} - CONTRACT_ADDRESS_DEPARTMENT_REGISTRY=${CONTRACT_ADDRESS_DEPARTMENT_REGISTRY:-} - CONTRACT_ADDRESS_WORKFLOW_REGISTRY=${CONTRACT_ADDRESS_WORKFLOW_REGISTRY:-} - PLATFORM_WALLET_PRIVATE_KEY=${PLATFORM_WALLET_PRIVATE_KEY:-} - JWT_SECRET=${JWT_SECRET:-K7gNx2qP9mBvL4wR8tYhD3jF6nC1aE5sX0uZoI7bQ2cV9kM4pT8yH1dG6rW3fA0} depends_on: # postgres: # condition: service_healthy redis: condition: service_healthy # minio: # condition: service_healthy networks: - goa-gel-network volumes: - ./src:/app/src:ro healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:3001/health"] interval: 30s timeout: 10s retries: 3 # ================================ # PostgreSQL Database # ================================ # postgres: # image: postgres:15-alpine # container_name: goa-gel-postgres # restart: unless-stopped # ports: # - "5432:5432" # environment: # - POSTGRES_DB=goa_gel_platform # - POSTGRES_USER=postgres # - POSTGRES_PASSWORD=postgres_secure_password # volumes: # - postgres_data:/var/lib/postgresql/data # networks: # - goa-gel-network # healthcheck: # test: ["CMD-SHELL", "pg_isready -U postgres -d goa_gel_platform"] # interval: 10s # timeout: 5s # retries: 5 # ================================ # Redis Cache & Queue # ================================ redis: image: redis:7-alpine container_name: goa-gel-redis restart: unless-stopped ports: - "6379:6379" command: redis-server --appendonly yes volumes: - redis_data:/data networks: - goa-gel-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 # ================================ # MinIO Object Storage # ================================ # minio: # image: minio/minio:latest # container_name: goa-gel-minio # restart: unless-stopped # ports: # - "9000:9000" # - "9001:9001" # environment: # - MINIO_ROOT_USER=minioadmin # - MINIO_ROOT_PASSWORD=minioadmin_secure # command: server /data --console-address ":9001" # volumes: # - minio_data:/data # networks: # - goa-gel-network # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] # interval: 30s # timeout: 20s # retries: 3 # # ================================ # # Hyperledger Besu Dev Node (Auto-mining) # # ================================ # besu-node-1: # image: hyperledger/besu:24.1.0 # container_name: goa-gel-besu-1 # restart: unless-stopped # user: root # ports: # - "8545:8545" # - "8546:8546" # - "30303:30303" # command: # - --network=dev # - --miner-enabled # - --miner-coinbase=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 # - --rpc-http-enabled # - --rpc-http-host=0.0.0.0 # - --rpc-http-port=8545 # - --rpc-http-cors-origins=* # - --rpc-http-api=ETH,NET,WEB3,DEBUG,MINER,ADMIN,TXPOOL,TRACE # - --rpc-ws-enabled # - --rpc-ws-host=0.0.0.0 # - --rpc-ws-port=8546 # - --host-allowlist=* # - --min-gas-price=0 # - --data-path=/var/lib/besu # volumes: # - besu_data_1:/var/lib/besu # networks: # - goa-gel-network # healthcheck: # test: ["CMD-SHELL", "exit 0"] # interval: 30s # timeout: 10s # retries: 3 # # ================================ # # Blockscout Database # # ================================ # blockscout-db: # image: postgres:15-alpine # container_name: goa-gel-blockscout-db # restart: unless-stopped # environment: # POSTGRES_DB: blockscout # POSTGRES_USER: blockscout # POSTGRES_PASSWORD: blockscout_secure # volumes: # - blockscout_db_data:/var/lib/postgresql/data # networks: # - goa-gel-network # healthcheck: # test: ["CMD-SHELL", "pg_isready -U blockscout -d blockscout"] # interval: 10s # timeout: 5s # retries: 5 # # ================================ # # Blockscout Explorer # # ================================ # blockscout: # image: blockscout/blockscout:6.3.0 # container_name: goa-gel-blockscout # restart: unless-stopped # ports: # - "4000:4000" # environment: # DATABASE_URL: postgresql://blockscout:blockscout_secure@blockscout-db:5432/blockscout # ETHEREUM_JSONRPC_VARIANT: besu # ETHEREUM_JSONRPC_HTTP_URL: http://besu-node-1:8545 # ETHEREUM_JSONRPC_WS_URL: ws://besu-node-1:8546 # ETHEREUM_JSONRPC_TRACE_URL: http://besu-node-1:8545 # NETWORK: Goa-GEL Private Network # SUBNETWORK: Development # LOGO: /images/blockscout_logo.svg # LOGO_FOOTER: /images/blockscout_logo.svg # COIN: ETH # COIN_NAME: Ether # INDEXER_DISABLE_PENDING_TRANSACTIONS_FETCHER: "true" # INDEXER_DISABLE_INTERNAL_TRANSACTIONS_FETCHER: "false" # FETCH_REWARDS_WAY: trace_block # TRACE_FIRST_BLOCK: "0" # TRACE_LAST_BLOCK: "" # POOL_SIZE: 80 # POOL_SIZE_API: 10 # ECTO_USE_SSL: "false" # SECRET_KEY_BASE: RMgI4C1HSkxsEjdhtGMfwAHfyT6CKWXOgzCboJflfSm4jeAlic52io05KB6mqzc5 # PORT: 4000 # DISABLE_EXCHANGE_RATES: "true" # SHOW_TXS_CHART: "true" # HISTORY_FETCH_INTERVAL: 30 # TXS_HISTORIAN_INIT_LAG: 0 # TXS_STATS_DAYS_TO_COMPILE_AT_INIT: 10 # HEART_BEAT_TIMEOUT: 60 # BLOCKSCOUT_HOST: localhost # BLOCKSCOUT_PROTOCOL: http # API_V2_ENABLED: "true" # MIX_ENV: prod # depends_on: # blockscout-db: # condition: service_healthy # besu-node-1: # condition: service_healthy # networks: # - goa-gel-network # command: sh -c "bin/blockscout eval \"Elixir.Explorer.ReleaseTasks.create_and_migrate()\" && bin/blockscout start" networks: goa-gel-network: driver: bridge volumes: # postgres_data: redis_data: # minio_data: # besu_data_1: # blockscout_db_data: