version: "3" services: bot: image: git.hhhammer.de/hamburghammer/dchat/bot:latest env_file: - .env build: dockerfile: Dockerfile context: . target: bot restart: unless-stopped networks: - db user: 1000:1000 depends_on: - db - migration web: image: git.hhhammer.de/hamburghammer/dchat/web:latest env_file: - .env build: dockerfile: Dockerfile context: . target: web restart: unless-stopped user: 1000:1000 depends_on: - db - migration ports: - 8080:8080 networks: - db - web migration: image: git.hhhammer.de/hamburghammer/dchat/migration:latest env_file: - .env build: dockerfile: Dockerfile context: . target: migration user: 1000:1000 depends_on: - db networks: - db ui: image: git.hhhammer.de/hamburghammer/dchat/ui:latest build: dockerfile: Dockerfile context: . target: ui restart: unless-stopped ports: - 8081:80 networks: - ui caddy: image: git.hhhammer.de/hamburghammer/dchat/caddy:latest build: dockerfile: Dockerfile context: . target: caddy restart: unless-stopped user: 1000:1000 depends_on: - ui - web ports: - 8082:8080 networks: - ui - web volumes: - caddy_config:/config db: image: docker.io/postgres:15-alpine env_file: - .env restart: unless-stopped ports: - 127.0.0.1:5432:5432 networks: - db volumes: - ./data/postgres:/var/lib/postgresql/data:rw healthcheck: test: [ "CMD-SHELL", "pg_isready", "-d", $POSTGRES_DB ] interval: 10s timeout: 5s retries: 5 start_period: 60s volumes: caddy_config: networks: db: ui: web: