Prepare Portainer stack deployment

This commit is contained in:
2026-05-07 19:16:17 +02:00
parent fdf2f1fddc
commit 1fc39ee12b
5 changed files with 188 additions and 62 deletions

View File

@@ -1,58 +1,75 @@
version: "3.9"
services:
contract-companion:
build: .
container_name: contract-companion
image: ${BACKEND_IMAGE:-paperless-contract-companion-api:latest}
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
environment:
- PORT=8000
- LOG_LEVEL=info
- LOG_LEVEL=${LOG_LEVEL:-info}
- DATABASE_PATH=/app/data/contracts.db
- PAPERLESS_BASE_URL=http://192.168.178.33:8010
- PAPERLESS_EXTERNAL_URL=https://paperless.srv.medeba-media.de
- PAPERLESS_TOKEN=6b45776ff3fbbc809a46fc59a80e3ce867cae09a
- ALERT_DAYS_BEFORE=45
- SCHEDULER_INTERVAL_MINUTES=60
- AUTH_USERNAME=admin
- AUTH_PASSWORD=change-me
- AUTH_JWT_SECRET=replace-with-random-secret
- AUTH_TOKEN_EXPIRES_IN_HOURS=12
# Optional ntfy push settings:
# - NTFY_SERVER_URL=https://ntfy.example.com
# - NTFY_TOPIC=contracts
# - NTFY_TOKEN=secret
# - NTFY_PRIORITY=high
# Optional mail settings:
# - MAIL_SERVER=smtp.example.com
# - MAIL_PORT=587
# - MAIL_USERNAME=mailer
# - MAIL_PASSWORD=secret
# - MAIL_USE_TLS=true
# - MAIL_FROM=contract-monitor@example.com
# - MAIL_TO=you@example.com
- APP_EXTERNAL_URL=https://vertraege.srv.medeba-media.de
- APP_LOCALE=de
# Optional: festen iCal-Token vorgeben
# - ICAL_SECRET=replace-with-secret
- ALERT_DAYS_BEFORE=${ALERT_DAYS_BEFORE:-45}
- SCHEDULER_INTERVAL_MINUTES=${SCHEDULER_INTERVAL_MINUTES:-60}
- AUTH_USERNAME=${AUTH_USERNAME:-admin}
- AUTH_PASSWORD=${AUTH_PASSWORD:?Set AUTH_PASSWORD in Portainer stack environment}
- AUTH_JWT_SECRET=${AUTH_JWT_SECRET:?Set AUTH_JWT_SECRET in Portainer stack environment}
- AUTH_TOKEN_EXPIRES_IN_HOURS=${AUTH_TOKEN_EXPIRES_IN_HOURS:-12}
- APP_LOCALE=${APP_LOCALE:-de}
- PAPERLESS_BASE_URL
- PAPERLESS_EXTERNAL_URL
- PAPERLESS_TOKEN
- APP_EXTERNAL_URL
- NTFY_SERVER_URL
- NTFY_TOPIC
- NTFY_TOKEN
- NTFY_PRIORITY
- MAIL_SERVER
- MAIL_PORT
- MAIL_USERNAME
- MAIL_PASSWORD
- MAIL_USE_TLS
- MAIL_FROM
- MAIL_TO
- ICAL_SECRET
volumes:
- contracts-data:/app/data
ports:
- "8112:8000"
- "${BACKEND_PORT:-8112}:8000"
labels:
- "com.centurylinklabs.watchtower.enable=false"
- "com.centurylinklabs.watchtower.enable=${WATCHTOWER_ENABLE:-false}"
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8000/healthz >/dev/null 2>&1 || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
networks:
- contract-companion
contract-companion-ui:
image: ${FRONTEND_IMAGE:-paperless-contract-companion-ui:latest}
build:
context: .
dockerfile: frontend/Dockerfile
container_name: contract-companion-ui
restart: unless-stopped
ports:
- "8113:80"
- "${FRONTEND_PORT:-8113}:80"
labels:
- "com.centurylinklabs.watchtower.enable=false"
- "com.centurylinklabs.watchtower.enable=${WATCHTOWER_ENABLE:-false}"
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1/ >/dev/null 2>&1 || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
depends_on:
- contract-companion
networks:
- contract-companion
volumes:
contracts-data:
networks:
contract-companion: