2026-02-07 10:23:29 -04:00
|
|
|
services:
|
|
|
|
|
# ================================
|
|
|
|
|
# NestJS API Backend
|
|
|
|
|
# ================================
|
|
|
|
|
api:
|
|
|
|
|
build:
|
|
|
|
|
context: .
|
|
|
|
|
dockerfile: Dockerfile
|
|
|
|
|
container_name: goa-gel-api
|
2026-02-07 16:35:17 +00:00
|
|
|
restart: on-failure:10
|
2026-02-07 10:23:29 -04:00
|
|
|
ports:
|
|
|
|
|
- "3001:3001"
|
|
|
|
|
environment:
|
2026-02-07 16:35:17 +00:00
|
|
|
- NODE_ENV=production
|
2026-02-07 10:23:29 -04:00
|
|
|
- PORT=3001
|
2026-02-07 16:35:17 +00:00
|
|
|
- DATABASE_HOST=104.211.94.205
|
2026-02-07 10:23:29 -04:00
|
|
|
- DATABASE_PORT=5432
|
|
|
|
|
- DATABASE_NAME=goa_gel_platform
|
2026-02-07 16:35:17 +00:00
|
|
|
- DATABASE_USER=psqladmin
|
|
|
|
|
- DATABASE_PASSWORD=mD1tX9gDB6O6
|
2026-02-07 10:23:29 -04:00
|
|
|
- REDIS_HOST=redis
|
|
|
|
|
- REDIS_PORT=6379
|
2026-02-07 16:35:17 +00:00
|
|
|
- MINIO_ENDPOINT=104.211.94.205
|
2026-02-07 10:23:29 -04:00
|
|
|
- MINIO_PORT=9000
|
2026-02-07 16:35:17 +00:00
|
|
|
- MINIO_ACCESS_KEY=admin
|
|
|
|
|
- MINIO_SECRET_KEY=7x6sV7WsYjOa
|
2026-02-07 10:23:29 -04:00
|
|
|
- MINIO_BUCKET_DOCUMENTS=goa-gel-documents
|
2026-02-07 16:35:17 +00:00
|
|
|
- BESU_RPC_URL=http://104.211.94.205:8545
|
2026-02-07 10:23:29 -04:00
|
|
|
- BESU_CHAIN_ID=1337
|
|
|
|
|
- BESU_NETWORK_ID=2024
|
2026-02-07 16:35:17 +00:00
|
|
|
- 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}
|
2026-02-07 10:23:29 -04:00
|
|
|
depends_on:
|
2026-02-07 16:35:17 +00:00
|
|
|
# postgres:
|
|
|
|
|
# condition: service_healthy
|
2026-02-07 10:23:29 -04:00
|
|
|
redis:
|
|
|
|
|
condition: service_healthy
|
2026-02-07 16:35:17 +00:00
|
|
|
# minio:
|
|
|
|
|
# condition: service_healthy
|
2026-02-07 10:23:29 -04:00
|
|
|
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
|
|
|
|
|
# ================================
|
2026-02-07 16:35:17 +00:00
|
|
|
# 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
|
2026-02-07 10:23:29 -04:00
|
|
|
|
|
|
|
|
# ================================
|
|
|
|
|
# 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
|
|
|
|
|
# ================================
|
2026-02-07 16:35:17 +00:00
|
|
|
# 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
|
2026-02-07 10:23:29 -04:00
|
|
|
|
2026-02-07 16:35:17 +00:00
|
|
|
# # ================================
|
|
|
|
|
# # 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
|
2026-02-07 10:23:29 -04:00
|
|
|
|
2026-02-07 16:35:17 +00:00
|
|
|
# # ================================
|
|
|
|
|
# # 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
|
2026-02-07 10:23:29 -04:00
|
|
|
|
2026-02-07 16:35:17 +00:00
|
|
|
# # ================================
|
|
|
|
|
# # 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"
|
2026-02-07 10:23:29 -04:00
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
goa-gel-network:
|
|
|
|
|
driver: bridge
|
|
|
|
|
|
|
|
|
|
volumes:
|
2026-02-07 16:35:17 +00:00
|
|
|
# postgres_data:
|
|
|
|
|
redis_data:
|
|
|
|
|
# minio_data:
|
|
|
|
|
# besu_data_1:
|
|
|
|
|
# blockscout_db_data:
|