ITSM/deploy/docker-compose.yml

55 lines
1.8 KiB
YAML
Executable File

# ITSM-Deployment (Rust-Version).
#
# Aufsetzen:
# 1. Repo nach /docker/itsm/src klonen (oder Build-Kontext anpassen)
# 2. .env mit POSTGRES_PASSWORD anlegen
# 3. docker compose up -d --build
#
# Update: git pull im Quell-Checkout, dann docker compose up -d --build.
# Anders als frueher wird beim Container-NEUSTART kein Code mehr aus dem
# Git gezogen -- ein Neustart startet exakt das gebaute Image (reproduzierbar,
# kein ungetesteter main-Stand in Prod).
services:
postgres:
# Bewusst bei postgres:16 bleiben: das bestehende pgdata-Verzeichnis ist
# mit 16 initialisiert; ein Major-Upgrade braucht pg_upgrade/dump+restore.
image: postgres:16-alpine
container_name: itsm_postgres
restart: unless-stopped
environment:
POSTGRES_DB: itsm
POSTGRES_USER: itsm
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD muss gesetzt sein}
volumes:
- ./pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U itsm -d itsm"]
interval: 5s
timeout: 5s
retries: 10
itsm:
build:
context: ../
dockerfile: Dockerfile
container_name: itsm_app
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "8090:8090"
environment:
DATABASE_URL: postgresql://itsm:${POSTGRES_PASSWORD}@postgres:5432/itsm
AES_DASHBOARD_URL: ${AES_DASHBOARD_URL:-http://host.docker.internal:8080}
FORGE_BASE_URL: ${FORGE_BASE_URL:-}
FORGE_SERVICE_TOKEN: ${FORGE_SERVICE_TOKEN:-}
# Hinter TLS-Terminierung (Reverse Proxy) setzen:
# ITSM_HTTPS: "1"
# ITSM_TRUSTED_PROXY_COUNT: "1"
ITSM_HTTPS: ${ITSM_HTTPS:-0}
ITSM_TRUSTED_PROXY_COUNT: ${ITSM_TRUSTED_PROXY_COUNT:-0}
RUST_LOG: ${RUST_LOG:-info}
extra_hosts:
- "host.docker.internal:host-gateway"