Files
wordcloud/docker-compose.yml
T
broccoli 4dc86b0d8e Merge remote-tracking branch 'origin/master'
# Conflicts:
#	docker-compose.yml
2026-09-13 15:37:38 +08:00

76 lines
2.3 KiB
YAML

services:
backend:
image: "${HARBOR_REGISTRY:-114.55.99.6:10081}/wordcloud/wordcloud-backend:${IMAGE_TAG:-latest}"
build:
context: ./backend
dockerfile: Dockerfile
container_name: wordcloud-backend
ports:
- "8000:8000"
environment:
CLEANUP_APPLY_ENABLED: "${CLEANUP_APPLY_ENABLED:-false}"
AI_CONVERTER_URL: http://ai-converter:8090
volumes:
- wordcloud_workspace:/app/service_workspace
- wordcloud_assets:/app/service_assets
- wordcloud_projects:/app/service_projects
- wordcloud_design_templates:/app/service_design_templates
- wordcloud_fonts:/app/service_fonts
- wordcloud_products:/app/service_products
- wordcloud_metadata:/app/service_metadata
- wordcloud_orders:/app/service_orders
restart: unless-stopped
depends_on:
ai-converter:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
# Private SVG -> AI5 converter. It deliberately has no published host port;
# browser traffic must go through the backend's /api/exports/ai endpoint.
ai-converter:
image: "${HARBOR_REGISTRY:-114.55.99.6:10081}/wordcloud/wordcloud-ai-converter:${IMAGE_TAG:-latest}"
build:
context: ./ai-converter
dockerfile: Dockerfile
container_name: wordcloud-ai-converter
restart: unless-stopped
read_only: true
tmpfs:
- /tmp
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8090/health', timeout=3).read()"]
interval: 30s
timeout: 5s
retries: 3
start_period: 15s
frontend:
image: "${HARBOR_REGISTRY:-114.55.99.6:10081}/wordcloud/wordcloud-frontend:${IMAGE_TAG:-latest}"
build:
context: ./frontend
dockerfile: Dockerfile
container_name: wordcloud-frontend
ports:
- "3000:80"
depends_on:
backend:
condition: service_healthy
restart: unless-stopped
volumes:
wordcloud_workspace:
wordcloud_assets:
wordcloud_projects:
wordcloud_design_templates:
wordcloud_fonts:
wordcloud_products:
wordcloud_metadata:
wordcloud_orders: