Files
2026-06-24 14:45:42 +02:00

78 lines
2.2 KiB
YAML

services:
outfit-voting-abi26:
image: tueem/outfit-voting-abi26:latest
restart: unless-stopped
environment:
DB_HOST: "HOST"
DB_PORT: "PORT"
DB_NAME: "NAME"
DB_USER: "USER"
DB_PASS: "PASS"
OIDC_ISSUER: "OIDC_ISSUER"
OIDC_CLIENTID: "OIDC_CLIENTID"
OIDC_SECRET: "OIDC_SECRET"
OIDC_REDIRECT: "OIDC_REDIRECT"
SIGNINGKEY: "SIGNINGKEY"
IMPRINTURL: "IMPRINTURL"
networks:
- web-network
- backend
depends_on:
postgres:
condition: service_healthy
labels:
- "traefik.enable=true"
- "traefik.http.routers.myapp.rule=Host(`example.com`)"
- "traefik.http.routers.myapp.entrypoints=websecure"
- "traefik.http.routers.myapp.tls=true"
- "traefik.http.routers.myapp.tls.certresolver=letsencrypt"
- "traefik.http.services.myapp.loadbalancer.server.port=4000"
postgres:
image: postgres:latest
restart: unless-stopped
shm_size: 128mb
environment:
POSTGRES_PASSWORD: "PASS"
volumes:
- db:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U myuser -d mydatabase"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
networks:
- backend
traefik:
image: traefik:v3.1
restart: unless-stopped
security_opt:
- no-new-privileges:true
ports:
- "80:80" # HTTP port
- "443:443" # HTTPS port
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencrypt.acme.email=your-email@example.com"
- "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme/acme.json"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik-ssl:/etc/traefik/acme
networks:
- web-network
networks:
web-network:
backend:
volumes:
db: