Files
2026-07-22 13:48:46 +08:00

89 lines
2.2 KiB
YAML

services:
# Redis service.
simplecad_redis:
image: redis:7-alpine
container_name: simplecad_redis
restart: unless-stopped
ports:
- "9736:9736"
volumes:
- simplecad_redis_data:/data/simplecad_redis
- ./redis.conf:/usr/local/etc/redis/redis.conf:ro
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- simplecad_network
healthcheck:
test: ["CMD", "redis-cli", "-p", "9736", "ping"]
interval: 10s
timeout: 5s
retries: 5
# API service.
simplecad_api:
build:
context: ..
dockerfile: docker/Dockerfile
platform: linux/amd64
container_name: simplecad_api
restart: unless-stopped
ports:
- "8000:8000"
env_file:
- ${CADDESIGNER_DOCKER_ENV_FILE:-.env}
environment:
- REDIS_HOST=simplecad_redis
- REDIS_PORT=9736
- REDIS_DB=0
- LOG_LEVEL=WARNING
volumes:
- app_data:/app/data
- app_logs:/app/logs
- app_workspace:/app/workspace
- ./provider.json:/app/config/provider.json:ro
depends_on:
simplecad_redis:
condition: service_healthy
command: ["python", "start_caddesigner_api.py", "--host", "0.0.0.0", "--port", "8000", "--working-dir", "/app/workspace"]
networks:
- simplecad_network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 15s
timeout: 5s
retries: 5
start_period: 40s
# Linux compatibility: allow the container to resolve the host machine domain.
extra_hosts:
- "host.docker.internal:host-gateway"
# React Web UI service.
simplecad_webui:
build:
context: ..
dockerfile: docker/Dockerfile.frontend
container_name: simplecad_webui
restart: unless-stopped
ports:
- "7860:7860"
environment:
- CADDESIGNER_API_PROXY_TARGET=http://simplecad_api:8000
depends_on:
simplecad_api:
condition: service_healthy
networks:
- simplecad_network
volumes:
simplecad_redis_data:
driver: local
app_data:
driver: local
app_logs:
driver: local
app_workspace:
driver: local
networks:
simplecad_network:
driver: bridge