Files
geMoldInsight/docker-compose.yml
T

231 lines
8.3 KiB
YAML
Raw Normal View History

2026-02-11 22:40:35 +08:00
services:
2026-08-31 18:01:34 +08:00
frontend:
build:
context: .
dockerfile: deploy/Dockerfile.frontend
image: gemold-frontend:latest
container_name: gemold_frontend
ports:
- "${FRONTEND_PORT:-80}:80"
depends_on:
- backend
restart: unless-stopped
profiles:
- full
- frontend
networks:
- gemold_network
backend:
2026-08-27 14:53:22 +08:00
build:
context: .
dockerfile: deploy/Dockerfile.moldinsight
2026-08-31 18:01:34 +08:00
image: gemold-backend:latest
container_name: gemold_backend
command: ["python", "-m", "uvicorn", "entrypoints.unified:app", "--host", "0.0.0.0", "--port", "8000"]
2026-02-11 22:40:35 +08:00
ports:
2026-08-31 18:01:34 +08:00
- "${BACKEND_PORT:-8000}:8000"
2026-02-11 22:40:35 +08:00
environment:
2026-08-27 14:53:22 +08:00
HOST: 0.0.0.0
PORT: "8000"
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT:-5432}
DB_NAME: ${DB_NAME:-moldinsight}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
REDIS_HOST: ${REDIS_HOST}
REDIS_PORT: ${REDIS_PORT:-6379}
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
RUSTFS_ENDPOINT: ${RUSTFS_ENDPOINT}
RUSTFS_ACCESS_KEY: ${RUSTFS_ACCESS_KEY}
RUSTFS_SECRET_KEY: ${RUSTFS_SECRET_KEY}
RUSTFS_TIMEOUT: ${RUSTFS_TIMEOUT:-30}
2026-09-16 17:55:04 +08:00
SECRET_KEY: ${SECRET_KEY:?SECRET_KEY 未配置:请在 .env 中设置}
2026-08-27 14:53:22 +08:00
ADMIN_USERNAME: ${ADMIN_USERNAME:-admin}
2026-09-16 17:55:04 +08:00
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?ADMIN_PASSWORD 未配置:请在 .env 中设置}
2026-08-27 14:53:22 +08:00
ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@gemold.com}
ADMIN_FULL_NAME: ${ADMIN_FULL_NAME:-系统管理员}
ALGORITHM: ${ALGORITHM:-HS256}
ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-1440}
DEBUG: ${DEBUG:-false}
2026-08-31 18:01:34 +08:00
SERVE_FRONTEND_STATIC: ${SERVE_FRONTEND_STATIC:-false}
2026-08-27 14:53:22 +08:00
UPLOAD_DIR: ${UPLOAD_DIR:-./uploads}
MAX_FILE_SIZE: ${MAX_FILE_SIZE:-104857600}
ALLOWED_EXTENSIONS: ${ALLOWED_EXTENSIONS:-.stp,.step,.stp.gz}
POINTCLOUD_SAMPLE_COUNT: ${POINTCLOUD_SAMPLE_COUNT:-10000}
MESH_QUALITY: ${MESH_QUALITY:-high}
PARALLEL_PROCESSING: ${PARALLEL_PROCESSING:-true}
RUSTFS_PRESIGNED_URL_EXPIRES: ${RUSTFS_PRESIGNED_URL_EXPIRES:-3600}
ENABLE_FREECAD_VERIFICATION: ${ENABLE_FREECAD_VERIFICATION:-false}
FREECAD_VERIFICATION_TIMEOUT: ${FREECAD_VERIFICATION_TIMEOUT:-120}
LLM_ENABLED: ${LLM_ENABLED:-false}
LLM_API_URL: ${LLM_API_URL:-https://api.openai.com/v1}
LLM_API_KEY: ${LLM_API_KEY:-}
LLM_MODEL: ${LLM_MODEL:-gpt-4o-mini}
LLM_TIMEOUT: ${LLM_TIMEOUT:-60}
LLM_MAX_TOKENS: ${LLM_MAX_TOKENS:-2000}
2026-09-16 17:55:04 +08:00
AUTO_MIGRATE: ${AUTO_MIGRATE:-true}
# 共享卷过渡兜底(D6/D11):主链路已改走 RustFS,本地卷仅为
# RustFS 异常时的本地路径回退与 HTML 产物互通保留,后续批次移除
volumes:
- uploads_data:/app/uploads
- html_data:/app/html_output
2026-02-11 22:40:35 +08:00
restart: unless-stopped
2026-08-27 14:53:22 +08:00
profiles:
- full
2026-08-31 18:01:34 +08:00
- unified
2026-02-11 22:40:35 +08:00
networks:
2026-08-27 14:53:22 +08:00
- gemold_network
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
moldinsight-celery:
build:
context: .
dockerfile: deploy/Dockerfile.celery
container_name: gemold_celery
2026-02-11 22:40:35 +08:00
environment:
2026-08-27 14:53:22 +08:00
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT:-5432}
DB_NAME: ${DB_NAME:-moldinsight}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
REDIS_HOST: ${REDIS_HOST}
REDIS_PORT: ${REDIS_PORT:-6379}
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
RUSTFS_ENDPOINT: ${RUSTFS_ENDPOINT}
RUSTFS_ACCESS_KEY: ${RUSTFS_ACCESS_KEY}
RUSTFS_SECRET_KEY: ${RUSTFS_SECRET_KEY}
RUSTFS_TIMEOUT: ${RUSTFS_TIMEOUT:-30}
2026-09-16 17:55:04 +08:00
SECRET_KEY: ${SECRET_KEY:?SECRET_KEY 未配置:请在 .env 中设置}
2026-08-27 14:53:22 +08:00
ALGORITHM: ${ALGORITHM:-HS256}
ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-1440}
DEBUG: ${DEBUG:-false}
2026-08-31 18:01:34 +08:00
SERVE_FRONTEND_STATIC: ${SERVE_FRONTEND_STATIC:-false}
2026-08-27 14:53:22 +08:00
UPLOAD_DIR: ${UPLOAD_DIR:-./uploads}
MAX_FILE_SIZE: ${MAX_FILE_SIZE:-104857600}
ALLOWED_EXTENSIONS: ${ALLOWED_EXTENSIONS:-.stp,.step,.stp.gz}
POINTCLOUD_SAMPLE_COUNT: ${POINTCLOUD_SAMPLE_COUNT:-10000}
MESH_QUALITY: ${MESH_QUALITY:-high}
PARALLEL_PROCESSING: ${PARALLEL_PROCESSING:-true}
RUSTFS_PRESIGNED_URL_EXPIRES: ${RUSTFS_PRESIGNED_URL_EXPIRES:-3600}
ENABLE_FREECAD_VERIFICATION: ${ENABLE_FREECAD_VERIFICATION:-false}
FREECAD_VERIFICATION_TIMEOUT: ${FREECAD_VERIFICATION_TIMEOUT:-120}
LLM_ENABLED: ${LLM_ENABLED:-false}
LLM_API_URL: ${LLM_API_URL:-https://api.openai.com/v1}
LLM_API_KEY: ${LLM_API_KEY:-}
LLM_MODEL: ${LLM_MODEL:-gpt-4o-mini}
LLM_TIMEOUT: ${LLM_TIMEOUT:-60}
LLM_MAX_TOKENS: ${LLM_MAX_TOKENS:-2000}
2026-09-16 17:55:04 +08:00
# 与 backend 共享本地卷(过渡兜底,见 D6/D11):worker 下载回退与 HTML 产物写读
volumes:
- uploads_data:/app/uploads
- html_data:/app/html_output
2026-02-11 22:40:35 +08:00
depends_on:
2026-08-31 18:01:34 +08:00
- backend
2026-02-11 22:40:35 +08:00
restart: unless-stopped
2026-08-27 14:53:22 +08:00
profiles:
- full
2026-08-31 18:01:34 +08:00
- unified
- moldinsight
networks:
- gemold_network
moldinsight:
build:
context: .
dockerfile: deploy/Dockerfile.moldinsight
image: gemold-moldinsight:latest
container_name: gemold_moldinsight
ports:
- "${MOLDINSIGHT_PORT:-8000}:8000"
environment:
HOST: 0.0.0.0
PORT: "8000"
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT:-5432}
DB_NAME: ${DB_NAME:-moldinsight}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
REDIS_HOST: ${REDIS_HOST}
REDIS_PORT: ${REDIS_PORT:-6379}
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
RUSTFS_ENDPOINT: ${RUSTFS_ENDPOINT}
RUSTFS_ACCESS_KEY: ${RUSTFS_ACCESS_KEY}
RUSTFS_SECRET_KEY: ${RUSTFS_SECRET_KEY}
RUSTFS_TIMEOUT: ${RUSTFS_TIMEOUT:-30}
2026-09-16 17:55:04 +08:00
SECRET_KEY: ${SECRET_KEY:?SECRET_KEY 未配置:请在 .env 中设置}
2026-08-31 18:01:34 +08:00
ADMIN_USERNAME: ${ADMIN_USERNAME:-admin}
2026-09-16 17:55:04 +08:00
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?ADMIN_PASSWORD 未配置:请在 .env 中设置}
2026-08-31 18:01:34 +08:00
ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@gemold.com}
ADMIN_FULL_NAME: ${ADMIN_FULL_NAME:-系统管理员}
ALGORITHM: ${ALGORITHM:-HS256}
ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-1440}
DEBUG: ${DEBUG:-false}
SERVE_FRONTEND_STATIC: ${SERVE_FRONTEND_STATIC:-false}
UPLOAD_DIR: ${UPLOAD_DIR:-./uploads}
MAX_FILE_SIZE: ${MAX_FILE_SIZE:-104857600}
ALLOWED_EXTENSIONS: ${ALLOWED_EXTENSIONS:-.stp,.step,.stp.gz}
POINTCLOUD_SAMPLE_COUNT: ${POINTCLOUD_SAMPLE_COUNT:-10000}
MESH_QUALITY: ${MESH_QUALITY:-high}
PARALLEL_PROCESSING: ${PARALLEL_PROCESSING:-true}
RUSTFS_PRESIGNED_URL_EXPIRES: ${RUSTFS_PRESIGNED_URL_EXPIRES:-3600}
ENABLE_FREECAD_VERIFICATION: ${ENABLE_FREECAD_VERIFICATION:-false}
FREECAD_VERIFICATION_TIMEOUT: ${FREECAD_VERIFICATION_TIMEOUT:-120}
LLM_ENABLED: ${LLM_ENABLED:-false}
LLM_API_URL: ${LLM_API_URL:-https://api.openai.com/v1}
LLM_API_KEY: ${LLM_API_KEY:-}
LLM_MODEL: ${LLM_MODEL:-gpt-4o-mini}
LLM_TIMEOUT: ${LLM_TIMEOUT:-60}
LLM_MAX_TOKENS: ${LLM_MAX_TOKENS:-2000}
2026-09-16 17:55:04 +08:00
AUTO_MIGRATE: ${AUTO_MIGRATE:-true}
volumes:
- uploads_data:/app/uploads
- html_data:/app/html_output
2026-08-31 18:01:34 +08:00
restart: unless-stopped
profiles:
2026-08-27 14:53:22 +08:00
- moldinsight
2026-02-11 22:40:35 +08:00
networks:
2026-08-27 14:53:22 +08:00
- gemold_network
2026-02-11 22:40:35 +08:00
2026-08-27 14:53:22 +08:00
inventory:
build:
context: .
dockerfile: deploy/Dockerfile.inventory
image: gemold-inventory:latest
container_name: gemold_inventory
ports:
- "${INVENTORY_PORT:-8001}:8001"
environment:
2026-08-27 14:53:22 +08:00
HOST: 0.0.0.0
PORT: "8001"
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT:-5432}
DB_NAME: ${DB_NAME:-moldinsight}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
REDIS_HOST: ${REDIS_HOST}
REDIS_PORT: ${REDIS_PORT:-6379}
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
2026-09-16 17:55:04 +08:00
SECRET_KEY: ${SECRET_KEY:?SECRET_KEY 未配置:请在 .env 中设置}
2026-08-27 14:53:22 +08:00
ADMIN_USERNAME: ${ADMIN_USERNAME:-admin}
2026-09-16 17:55:04 +08:00
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?ADMIN_PASSWORD 未配置:请在 .env 中设置}
2026-08-27 14:53:22 +08:00
ADMIN_EMAIL: ${ADMIN_EMAIL:-admin@gemold.com}
ADMIN_FULL_NAME: ${ADMIN_FULL_NAME:-系统管理员}
ALGORITHM: ${ALGORITHM:-HS256}
ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-1440}
DEBUG: ${DEBUG:-false}
2026-08-31 18:01:34 +08:00
SERVE_FRONTEND_STATIC: ${SERVE_FRONTEND_STATIC:-false}
2026-09-16 17:55:04 +08:00
AUTO_MIGRATE: ${AUTO_MIGRATE:-true}
restart: unless-stopped
2026-08-27 14:53:22 +08:00
profiles:
- inventory
networks:
2026-08-27 14:53:22 +08:00
- gemold_network
2026-02-11 22:40:35 +08:00
networks:
2026-08-27 14:53:22 +08:00
gemold_network:
2026-02-11 22:40:35 +08:00
driver: bridge
2026-09-16 17:55:04 +08:00
volumes:
uploads_data:
html_data: