Some checks failed
Build And Publish Production Image / Build And Publish Production Image (push) Failing after 7s
92 lines
3.2 KiB
YAML
92 lines
3.2 KiB
YAML
services:
|
|
|
|
# ── PostgreSQL ───────────────────────────────────────────────────────────────
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
container_name: condado-newsletter-postgres
|
|
environment:
|
|
POSTGRES_DB: condado
|
|
POSTGRES_USER: ${SPRING_DATASOURCE_USERNAME}
|
|
POSTGRES_PASSWORD: ${SPRING_DATASOURCE_PASSWORD}
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${SPRING_DATASOURCE_USERNAME} -d condado"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# ── Backend (Spring Boot) ────────────────────────────────────────────────────
|
|
backend:
|
|
container_name: condado-newsletter-backend
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
SPRING_PROFILES_ACTIVE: dev
|
|
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/condado
|
|
SPRING_DATASOURCE_USERNAME: ${SPRING_DATASOURCE_USERNAME}
|
|
SPRING_DATASOURCE_PASSWORD: ${SPRING_DATASOURCE_PASSWORD}
|
|
APP_PASSWORD: ${APP_PASSWORD}
|
|
JWT_SECRET: ${JWT_SECRET}
|
|
JWT_EXPIRATION_MS: ${JWT_EXPIRATION_MS}
|
|
MAIL_HOST: ${MAIL_HOST}
|
|
MAIL_PORT: ${MAIL_PORT}
|
|
MAIL_USERNAME: ${MAIL_USERNAME}
|
|
MAIL_PASSWORD: ${MAIL_PASSWORD}
|
|
IMAP_HOST: ${IMAP_HOST}
|
|
IMAP_PORT: ${IMAP_PORT}
|
|
IMAP_INBOX_FOLDER: ${IMAP_INBOX_FOLDER}
|
|
OPENAI_API_KEY: ${OPENAI_API_KEY}
|
|
OPENAI_MODEL: ${OPENAI_MODEL}
|
|
LLAMA_BASE_URL: ${LLAMA_BASE_URL}
|
|
LLAMA_MODEL: ${LLAMA_MODEL}
|
|
APP_RECIPIENTS: ${APP_RECIPIENTS}
|
|
extra_hosts:
|
|
- "celtinha.desktop:host-gateway"
|
|
- "host.docker.internal:host-gateway"
|
|
|
|
# ── Frontend + Nginx ─────────────────────────────────────────────────────────
|
|
nginx:
|
|
container_name: condado-newsletter-frontend
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
args:
|
|
VITE_API_BASE_URL: ${VITE_API_BASE_URL}
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- backend
|
|
networks:
|
|
- traefik
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.condado.rule=Host(`condado-newsletter.lab`)"
|
|
- "traefik.http.services.condado.loadbalancer.server.port=80"
|
|
- "homepage.group=Hyperlink"
|
|
- "homepage.name=Condado Newsletter"
|
|
- "homepage.description=Automated newsletter generator using AI"
|
|
- "homepage.logo=claude-dark.png"
|
|
- "homepage.href=http://condado-newsletter.lab"
|
|
|
|
# ── Mailhog (DEV ONLY — SMTP trap) ───────────────────────────────────────────
|
|
mailhog:
|
|
container_name: condado-newsletter-mailhog
|
|
image: mailhog/mailhog:latest
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8025:8025"
|
|
|
|
volumes:
|
|
postgres-data:
|
|
|
|
networks:
|
|
traefik:
|
|
external: true
|
|
name: traefik
|