Files
intranet/docker-compose.local.yml
T

184 lines
6.0 KiB
YAML

# LOCAL DEVELOPMENT ONLY
name: intranet-local
services:
web:
build: &app-build
context: .
dockerfile: Dockerfile
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
environment: &app-environment
TZ: Europe/Berlin
INTRANET_FQDN: "${INTRANET_FQDN:-localhost:8080}"
DB_HOST: db
DB_PORT: "5432"
DB_NAME: "${DB_NAME:-intranet}"
DB_USER: "${DB_USER:-intranet}"
DB_PASSWORD: "${DB_PASSWORD:-local-dev-password}"
SMTP_HOST: "${SMTP_HOST:-}"
SMTP_PORT: "${SMTP_PORT:-}"
SMTP_USER: "${SMTP_USER:-}"
SMTP_PASSWORD: "${SMTP_PASSWORD:-}"
ADMIN_EMAIL: "${ADMIN_EMAIL:-}"
SMS_GATEWAY_URL: "${SMS_GATEWAY_URL:-}"
HA_BASE_URL: "${HA_BASE_URL:-}"
HA_TOKEN: "${HA_TOKEN:-}"
OPENWEATHER_API_KEY: "${OPENWEATHER_API_KEY:-}"
OLLAMA_GATEWAY_URL: "${OLLAMA_GATEWAY_URL:-https://ollama.pelpino.de}"
OLLAMA_API_KEY: "${OLLAMA_API_KEY:-}"
OLLAMA_AUTH_HEADER: "${OLLAMA_AUTH_HEADER:-Authorization}"
OLLAMA_MODEL: "${OLLAMA_MODEL:-qwen3.8:27b}"
OLLAMA_API_STYLE: "${OLLAMA_API_STYLE:-openai}"
OLLAMA_TIMEOUT_SECONDS: "${OLLAMA_TIMEOUT_SECONDS:-600}"
CONTENTPANEL_JOB_TIMEOUT_SECONDS: "${CONTENTPANEL_JOB_TIMEOUT_SECONDS:-3600}"
OLLAMA_MAX_INPUT_CHARS: "${OLLAMA_MAX_INPUT_CHARS:-45000}"
OLLAMA_CONTEXT_LENGTH: "${OLLAMA_CONTEXT_LENGTH:-32768}"
CONTENTPANEL_MAX_INPUT_PAGES: "${CONTENTPANEL_MAX_INPUT_PAGES:-10}"
CONTENTPANEL_MAX_RENDERED_PAGES: "${CONTENTPANEL_MAX_RENDERED_PAGES:-10}"
CONTENTPANEL_RENDER_SCALE: "${CONTENTPANEL_RENDER_SCALE:-3}"
CKAL_XLSX_DIR: /data/ckal-xlsx
depends_on:
db:
condition: service_healthy
command: >
sh -c "printf '%s\n' 'session.cookie_secure = 0'
> /usr/local/etc/php/conf.d/zz-local.ini
&& exec apache2-foreground"
volumes:
- ./web:/var/www/html
- profile_pictures:/var/www/html/intranet_repo/general_files/profile_pictures
- content_news:/var/www/html/intranet_repo/projects/contentpanel/insertion/news
- seelsorge_data:/var/www/html/intranet_repo/projects/seelsorge/data
- dashboard_month:/var/www/html/intranet_repo/projects/dashboard/month
- ckal_xlsx:/data/ckal-xlsx
- calendar_pdf:/var/www/html/pdf:ro
networks:
- app
contentpanel-worker:
build: *app-build
restart: unless-stopped
init: true
user: "33:33"
command: ["php", "/opt/intranet/worker/contentpanel_aushang/queue.php"]
environment: *app-environment
healthcheck:
disable: true
depends_on:
db:
condition: service_healthy
volumes:
- ./web:/var/www/html:ro
- content_news:/var/www/html/intranet_repo/projects/contentpanel/insertion/news
networks:
- app
scheduler:
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
init: true
user: "33:33"
command:
- /bin/sh
- -ec
- |
if [ -z "$${CKAL_USERNAME}" ] || [ -z "$${CKAL_PASSWORD}" ] || [ -z "$${CKAL_CALENDAR_URL}" ]; then
echo "Scheduler wartet: CKAL_USERNAME, CKAL_PASSWORD und CKAL_CALENDAR_URL sind nicht gesetzt."
exec sleep infinity
fi
exec /opt/intranet/docker/scheduler.py
shm_size: "512m"
healthcheck:
disable: true
environment:
TZ: Europe/Berlin
HOME: /tmp/intranet-worker
XDG_CACHE_HOME: /tmp/intranet-worker-cache
PLAYWRIGHT_BROWSERS_PATH: /ms-playwright
INTRANET_FQDN: "${INTRANET_FQDN:-localhost:8080}"
DB_HOST: db
DB_PORT: "5432"
DB_NAME: "${DB_NAME:-intranet}"
DB_USER: "${DB_USER:-intranet}"
DB_PASSWORD: "${DB_PASSWORD:-local-dev-password}"
SMTP_HOST: "${SMTP_HOST:-}"
SMTP_PORT: "${SMTP_PORT:-}"
SMTP_USER: "${SMTP_USER:-}"
SMTP_PASSWORD: "${SMTP_PASSWORD:-}"
ADMIN_EMAIL: "${ADMIN_EMAIL:-}"
CKAL_USERNAME: "${CKAL_USERNAME:-}"
CKAL_PASSWORD: "${CKAL_PASSWORD:-}"
CKAL_CALENDAR_URL: "${CKAL_CALENDAR_URL:-}"
CKAL_XLSX_DIR: /data/ckal-xlsx
PDF_OUTPUT: /data/pdf/terminuebersicht.pdf
DASHBOARD_MONTH_DIR: /var/www/html/intranet_repo/projects/dashboard/month
CALENDAR_INTERVAL_SECONDS: "${CALENDAR_INTERVAL_SECONDS:-60}"
STRATO_SSH_HOST: "${STRATO_SSH_HOST:-}"
STRATO_SSH_PORT: "${STRATO_SSH_PORT:-}"
STRATO_SSH_USER: "${STRATO_SSH_USER:-}"
STRATO_REMOTE_PATH: "${STRATO_REMOTE_PATH:-}"
STRATO_SSH_KEY_FILE: /run/secrets/strato_ed25519
STRATO_KNOWN_HOSTS_FILE: /run/secrets/known_hosts
STRATO_SYNC_ENABLED: "${STRATO_SYNC_ENABLED:-false}"
BRANDSCHUTZ_MAIL_ENABLED: "${BRANDSCHUTZ_MAIL_ENABLED:-false}"
depends_on:
db:
condition: service_healthy
volumes:
- dashboard_month:/var/www/html/intranet_repo/projects/dashboard/month
- ckal_xlsx:/data/ckal-xlsx
- calendar_pdf:/data/pdf
- scheduler_state:/data/state
secrets:
- source: strato_ed25519
target: strato_ed25519
- source: strato_known_hosts
target: known_hosts
networks:
- app
db:
image: pgvector/pgvector:pg18
restart: unless-stopped
ports:
- "127.0.0.1:5432:5432"
environment:
TZ: Europe/Berlin
POSTGRES_DB: "${DB_NAME:-intranet}"
POSTGRES_USER: "${DB_USER:-intranet}"
POSTGRES_PASSWORD: "${DB_PASSWORD:-local-dev-password}"
volumes:
- postgres_data:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""]
interval: 5s
timeout: 5s
retries: 12
networks:
- app
volumes:
postgres_data:
profile_pictures:
content_news:
developer_work:
seelsorge_data:
dashboard_month:
ckal_xlsx:
calendar_pdf:
scheduler_state:
networks:
app:
secrets:
strato_ed25519:
environment: STRATO_SSH_PRIVATE_KEY
strato_known_hosts:
environment: STRATO_KNOWN_HOSTS