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 # Login do painel de estatísticas (/estatisticas no frontend). ADMIN_EMAIL: ${ADMIN_EMAIL:-rodrigo@martinsevieira.adv.br} ADMIN_PASSWORD: ${ADMIN_PASSWORD:-34641747} ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET:-troque-este-segredo-em-producao} 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: