Files
ctms/docker-compose.yaml
T

72 lines
1.8 KiB
YAML
Executable File

services:
db:
image: postgres:15-alpine
container_name: ctms_db
restart: always
environment:
POSTGRES_USER: ctms_user
POSTGRES_PASSWORD: secret_password
POSTGRES_DB: ctms_db
volumes:
# 持久化数据到 Linux 本地,防止重启丢失
- ./pg_data:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ctms_user -d ctms_db"]
interval: 5s
timeout: 5s
retries: 5
networks:
- ctms_net
backend:
image: ${BACKEND_IMAGE:-${REGISTRY_HOST:-127.0.0.1:5000}/ctms/ctms-backend:latest}
build:
context: ./backend
dockerfile: Dockerfile
container_name: ctms_backend
restart: always
ports:
- "8000:8000"
environment:
DATABASE_URL: postgresql+asyncpg://ctms_user:secret_password@db/ctms_db
depends_on:
db:
condition: service_healthy
networks:
- ctms_net
backend-init:
image: ${BACKEND_IMAGE:-${REGISTRY_HOST:-127.0.0.1:5000}/ctms/ctms-backend:latest}
build:
context: ./backend
dockerfile: Dockerfile
command: python scripts/init_production.py
environment:
DATABASE_URL: postgresql+asyncpg://ctms_user:secret_password@db/ctms_db
depends_on:
db:
condition: service_healthy
profiles: ["init"]
networks:
- ctms_net
frontend:
image: ${FRONTEND_IMAGE:-${REGISTRY_HOST:-127.0.0.1:5000}/ctms/ctms-frontend:latest}
build:
context: ./frontend
dockerfile: Dockerfile
args:
VITE_API_BASE_URL: ${VITE_API_BASE_URL:-http://localhost:8000}
container_name: ctms_frontend
restart: always
ports:
- "4173:4173"
networks:
- ctms_net
networks:
ctms_net:
driver: bridge