# ============================================ # Forge Admin 一键部署 Docker Compose 编排 # ============================================ # 使用方式: # cd docker # cp .env.example .env # 修改配置 # docker compose up -d # 访问 http://localhost/forge 默认账号: admin/123456 # ============================================ services: # ======================== # MySQL 数据库 # ======================== mysql: image: mysql:8.0 container_name: forge-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD:-forge123456} MYSQL_DATABASE: ${MYSQL_DB:-forge_admin} MYSQL_CHARSET: utf8mb4 TZ: Asia/Shanghai ports: - "${MYSQL_PORT:-3306}:3306" volumes: - mysql_data:/var/lib/mysql - ../forge/forge-admin/sql:/初始化脚本.sql command: > --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_PASSWORD:-forge123456}"] interval: 10s timeout: 5s retries: 10 networks: - forge-network # ======================== # Redis 缓存 # ======================== redis: image: redis:7-alpine container_name: forge-redis restart: unless-stopped command: redis-server --requirepass ${REDIS_PASSWORD:-forge123456} --appendonly yes ports: - "${REDIS_PORT:-6379}:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-forge123456}", "ping"] interval: 10s timeout: 5s retries: 5 networks: - forge-network # ======================== # Forge Flow 流程服务(需先于 admin 启动) # ======================== forge-flow: build: context: .. dockerfile: docker/Dockerfile.flow container_name: forge-flow restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy environment: MYSQL_HOST: mysql MYSQL_PORT: 3306 MYSQL_DB: ${MYSQL_DB:-forge_admin} MYSQL_USER: root MYSQL_PASSWORD: ${MYSQL_PASSWORD:-forge123456} REDIS_HOST: redis REDIS_PORT: 6379 REDIS_PASSWORD: ${REDIS_PASSWORD:-forge123456} JAVA_OPTS: -Xms256m -Xmx512m ports: - "${FLOW_PORT:-8081}:8081" networks: - forge-network # ======================== # Forge Admin 主服务 # ======================== forge-admin: build: context: .. dockerfile: docker/Dockerfile.admin container_name: forge-admin restart: unless-stopped depends_on: mysql: condition: service_healthy redis: condition: service_healthy forge-flow: condition: service_started environment: MYSQL_HOST: mysql MYSQL_PORT: 3306 MYSQL_DB: ${MYSQL_DB:-forge_admin} MYSQL_USER: root MYSQL_PASSWORD: ${MYSQL_PASSWORD:-forge123456} REDIS_HOST: redis REDIS_PORT: 6379 REDIS_PASSWORD: ${REDIS_PASSWORD:-forge123456} FLOW_CLIENT_URL: http://forge-flow:8081 FORGE_CRYPTO_BOOTSTRAP_ENABLED: ${FORGE_CRYPTO_BOOTSTRAP_ENABLED:-true} FORGE_CRYPTO_BOOTSTRAP_FILE: /var/lib/forge/secrets/crypto.properties FORGE_CRYPTO_SECRET_KEY: "${FORGE_CRYPTO_SECRET_KEY:-}" FORGE_CRYPTO_PERSISTENCE_ENABLED: "${FORGE_CRYPTO_PERSISTENCE_ENABLED:-}" FORGE_CRYPTO_PERSISTENCE_WRITE_VERSIONED: "${FORGE_CRYPTO_PERSISTENCE_WRITE_VERSIONED:-}" FORGE_CRYPTO_PERSISTENCE_LEGACY_READ_ENABLED: "${FORGE_CRYPTO_PERSISTENCE_LEGACY_READ_ENABLED:-}" FORGE_AUTH_LEGACY_CLIENT_SECRET_READ_ENABLED: ${FORGE_AUTH_LEGACY_CLIENT_SECRET_READ_ENABLED:-true} FORGE_CRYPTO_PERSISTENCE_LEGACY_KEY: "${FORGE_CRYPTO_PERSISTENCE_LEGACY_KEY:-}" FORGE_CRYPTO_PERSISTENCE_ACTIVE_KEY_ID: "${FORGE_CRYPTO_PERSISTENCE_ACTIVE_KEY_ID:-}" FORGE_CRYPTO_PERSISTENCE_ACTIVE_KEY: "${FORGE_CRYPTO_PERSISTENCE_ACTIVE_KEY:-}" JAVA_OPTS: -Xms256m -Xmx512m volumes: - crypto_secrets:/var/lib/forge/secrets ports: - "${ADMIN_PORT:-8580}:8580" networks: - forge-network # ======================== # 前端 Nginx # ======================== forge-ui: build: context: .. dockerfile: docker/Dockerfile.ui container_name: forge-ui restart: unless-stopped depends_on: - forge-admin - forge-flow ports: - "${NGINX_PORT:-80}:80" networks: - forge-network # ======================== # 数据卷 # ======================== volumes: mysql_data: driver: local redis_data: driver: local crypto_secrets: driver: local # ======================== # 网络 # ======================== networks: forge-network: driver: bridge