From 1b946789a434fabb11543e71ae70e5b150e4c37c Mon Sep 17 00:00:00 2001 From: Tueem Date: Wed, 24 Jun 2026 14:45:42 +0200 Subject: [PATCH] feat(docker): add compose --- compose.yaml | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 compose.yaml diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..25f4f05 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,77 @@ +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: +