dana-medical-site/docker-compose.prod.yml

66 lines
2.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: dana
POSTGRES_USER: dana
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
volumes:
- db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U dana -d dana"]
interval: 5s
timeout: 3s
retries: 20
api:
build:
context: .
restart: unless-stopped
env_file:
- .env
environment:
DATABASE_URL: postgres://dana:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@db:5432/dana?sslmode=disable
APP_ADDR: ":8080"
MEDIA_DIR: /data/media
WEB_DIR: /app/web/dist
SSR_RENDERER: /app/web/scripts/render-page.mjs
NODE_BINARY: node
SITE_URL: ${SITE_URL:?SITE_URL is required}
DEBUG: "false"
ONEC_API_URL: ""
ONEC_MCP_URL: ""
ONEC_MCP_TOKEN: ""
# Caddy уже работает в контейнере Ability Center. Публикуем DANA только
# на docker0 хоста: из интернета порт недоступен, Caddy обращается к нему
# как к 172.17.0.1:8082.
ports:
- "172.17.0.1:${DANA_PORT:-8082}:8080"
volumes:
- media:/data/media
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:8080/api/v1/health').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))"]
interval: 10s
timeout: 5s
retries: 12
start_period: 20s
security_opt:
- no-new-privileges:true
volumes:
db-data:
media:
# Существующая сеть уже проверена: 172.20.0.0/16. external запрещает Compose
# пересоздавать её при добавлении моста и затрагивать работающие api/db.
# При развёртывании на новом хосте сначала создайте эту сеть с нужной подсетью.
networks:
default:
external: true
name: dana-medical_default