Files
anatomia/docker-compose.yml
T

99 lines
2.8 KiB
YAML

networks:
dockernet:
external: true
name: dockernet
services:
anatomia-db:
container_name: anatomia-db
image: postgres:16-alpine
restart: unless-stopped
environment:
TZ: 'America/Araguaina'
POSTGRES_USER: ${POSTGRES_USER:-anatomia}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-anatomia}
POSTGRES_DB: ${POSTGRES_DB:-anatomia}
volumes:
- anatomia_db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-anatomia}"]
interval: 5s
timeout: 5s
retries: 10
networks:
- dockernet
deploy:
resources:
limits:
memory: 512M
anatomia-api:
container_name: anatomia-api
build:
context: ./anatomia/backend
restart: unless-stopped
depends_on:
anatomia-db:
condition: service_healthy
environment:
TZ: 'America/Araguaina'
DATABASE_URL: postgresql://${POSTGRES_USER:-anatomia}:${POSTGRES_PASSWORD:-anatomia}@anatomia-db:5432/${POSTGRES_DB:-anatomia}?connection_limit=10
PORT: 3333
MODELS_DIR: /app/models
volumes:
- anatomia_models_data:/app/models:ro
networks:
- dockernet
deploy:
resources:
limits:
memory: 512M
anatomia-web:
container_name: anatomia-web
build:
context: ./anatomia
dockerfile: frontend/Dockerfile
restart: unless-stopped
depends_on:
- anatomia-api
environment:
TZ: 'America/Araguaina'
# Lido pelo acme-companion (pareado com nginx-gen) para emitir/renovar
# o certificado Let's Encrypt deste domínio.
LETSENCRYPT_HOST: ${ANATOMIA_DOMAIN:-atlas.martinsevieira.adv.br}
networks:
dockernet:
# IP fixo para o vhost manual em docker/nginx/sites/*.conf poder
# apontar (proxy_pass) direto para este container, no mesmo padrão
# já usado para "frontend"/"backend" (ticketz) e "nextcloud".
# Confirme que este IP está livre em dockernet antes de subir!
ipv4_address: ${ANATOMIA_WEB_IP:-10.15.0.93}
deploy:
resources:
limits:
memory: 256M
# One-off data pipeline: generates the seed GLB models + populates the DB.
# Run explicitly with: docker compose run --rm anatomia-pipeline
anatomia-pipeline:
container_name: anatomia-pipeline
build:
context: ./anatomia/data-pipeline
profiles: ["tools"]
depends_on:
anatomia-db:
condition: service_healthy
anatomia-api:
condition: service_started
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-anatomia}:${POSTGRES_PASSWORD:-anatomia}@anatomia-db:5432/${POSTGRES_DB:-anatomia}?connection_limit=10
volumes:
- anatomia_models_data:/app/seed/models
networks:
- dockernet
volumes:
anatomia_db_data:
anatomia_models_data: