Files
a-share-analysis/deploy/compose/production.yml.example
T

54 lines
1.7 KiB
Plaintext

# Web/Server 镜像与三进程入口均已纳入发布验证;外部基础设施继续由运维管理。
name: a-share-analysis-production
services:
web:
image: ${A_SHARE_WEB_IMAGE:?必须提供不可变 Web 镜像引用}
ports:
- '127.0.0.1:8080:80'
depends_on:
api:
condition: service_healthy
healthcheck:
test: ['CMD', 'wget', '-q', '-O', '/dev/null', 'http://127.0.0.1/']
interval: 30s
timeout: 3s
retries: 3
start_period: 5s
restart: unless-stopped
api:
image: ${A_SHARE_SERVER_IMAGE:?必须提供不可变 Server 镜像引用}
command: ['node', 'dist/apps/api/main.js']
env_file: ${A_SHARE_API_ENV_FILE:-/etc/a-share-analysis/api.env}
environment:
# 容器网络需要对 Web 服务可达;源码部署模板仍只监听回环地址。
API_HOST: 0.0.0.0
ports:
- '127.0.0.1:3000:3000'
healthcheck:
test:
[
'CMD',
'node',
'-e',
"fetch('http://127.0.0.1:3000/api/v1/health').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))",
]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
restart: unless-stopped
scheduler:
image: ${A_SHARE_SERVER_IMAGE:?必须提供不可变 Server 镜像引用}
command: ['node', 'dist/apps/scheduler/main.js']
env_file: ${A_SHARE_SCHEDULER_ENV_FILE:-/etc/a-share-analysis/scheduler.env}
restart: unless-stopped
worker:
image: ${A_SHARE_SERVER_IMAGE:?必须提供不可变 Server 镜像引用}
command: ['node', 'dist/apps/worker/main.js']
env_file: ${A_SHARE_WORKER_ENV_FILE:-/etc/a-share-analysis/worker.env}
restart: unless-stopped