88 lines
1.9 KiB
YAML
88 lines
1.9 KiB
YAML
---
|
|
|
|
version: "3"
|
|
|
|
services:
|
|
todo-webserver:
|
|
container_name: todo-webserver
|
|
restart: unless-stopped
|
|
build:
|
|
context: .
|
|
dockerfile: production.webserver.Dockerfile
|
|
args:
|
|
CUSTOM_UID: 1000
|
|
CUSTOM_GID: 1000
|
|
networks:
|
|
- proxy
|
|
- todo
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.todo.entrypoints=https"
|
|
- "traefik.http.routers.todo.rule=Host(`todo.example.com`)"
|
|
- "traefik.http.routers.todo-secure.middlewares=default@file"
|
|
- "traefik.http.routers.todo.tls=true"
|
|
- "traefik.http.services.todo.loadbalancer.server.port=8000"
|
|
- 'traefik.docker.network=proxy'
|
|
todo-frontend:
|
|
container_name: todo-frontend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- todo-webserver
|
|
build:
|
|
context: .
|
|
dockerfile: production.frontend.Dockerfile
|
|
args:
|
|
CUSTOM_UID: 1000
|
|
CUSTOM_GID: 1000
|
|
networks:
|
|
- todo
|
|
expose:
|
|
- "3000"
|
|
todo-backend:
|
|
container_name: todo-backend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- todo-webserver
|
|
- todo-db
|
|
build:
|
|
context: .
|
|
dockerfile: ./production.backend.Dockerfile
|
|
args:
|
|
CUSTOM_UID: 1000
|
|
CUSTOM_GID: 1000
|
|
networks:
|
|
- todo
|
|
expose:
|
|
- "3000"
|
|
environment:
|
|
APP_NAME: "TodoApp"
|
|
ADMIN_EMAIL: "admin@example.com"
|
|
DEBUG_MODE: "true"
|
|
POSTGRES_HOST: "todo-db"
|
|
POSTGRES_PORT: "5432"
|
|
POSTGRES_DB: "todo"
|
|
POSTGRES_USER: "todo"
|
|
POSTGRES_PASSWORD: "todo"
|
|
todo-db:
|
|
image: postgres:alpine
|
|
container_name: todo-db
|
|
restart: unless-stopped
|
|
networks:
|
|
- todo
|
|
expose:
|
|
- "5432"
|
|
volumes:
|
|
- /srv/todo/data:/var/lib/postgresql/data
|
|
environment:
|
|
TZ: Europe/Berlin
|
|
POSTGRES_DB: "todo"
|
|
POSTGRES_USER: "todo"
|
|
POSTGRES_PASSWORD: "todo"
|
|
|
|
networks:
|
|
proxy:
|
|
external: true
|
|
todo:
|
|
external: false
|
|
|
|
...
|