| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- # ============================================
- # 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
|