octane-website/docker-compose.yml

45 lines
1.3 KiB
YAML
Raw Permalink Normal View History

2026-07-08 11:05:21 +02:00
services:
app:
# Built and pushed by .github/workflows/ci.yml on every push to main.
# Watchtower on the server picks up new digests on this tag automatically.
image: ${APP_IMAGE:-ghcr.io/nfonteyne/octane-website:latest}
2026-07-08 13:09:46 +02:00
container_name: octane-app
2026-07-08 11:05:21 +02:00
restart: unless-stopped
env_file: .env
depends_on:
- postgres
networks:
- default
2026-07-08 13:09:46 +02:00
- traefik-proxy
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik-proxy"
- "traefik.http.routers.octane.rule=Host(`${APP_DOMAIN:-octane.dandrove.com}`)"
- "traefik.http.routers.octane.entrypoints=websecure"
- "traefik.http.routers.octane.tls.certresolver=myresolver"
- "traefik.http.services.octane.loadbalancer.server.port=3000"
# No host port published: Traefik reaches the container directly over
# traefik-proxy. Add "ports: ['3000:3000']" temporarily if you need
# to hit the app straight from the host while debugging.
2026-07-08 11:05:21 +02:00
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: octane
POSTGRES_USER: octane
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- default
networks:
default:
2026-07-08 13:09:46 +02:00
traefik-proxy:
2026-07-08 11:05:21 +02:00
external: true
2026-07-08 13:09:46 +02:00
name: ${TRAEFIK_NETWORK_NAME:-traefik-proxy}
2026-07-08 11:05:21 +02:00
volumes:
pgdata: