2025-07-03 15:04:27 +03:00
|
|
|
services:
|
|
|
|
|
backend:
|
|
|
|
|
build:
|
|
|
|
|
context: ./backend
|
|
|
|
|
dockerfile: ../Dockerfile.backend
|
2025-07-05 21:22:18 +03:00
|
|
|
target: dev # Development mode with hot reload
|
2025-07-03 21:58:49 +03:00
|
|
|
restart: unless-stopped
|
2025-07-03 15:04:27 +03:00
|
|
|
container_name: cover-letter-backend
|
2025-07-03 21:58:49 +03:00
|
|
|
|
2025-07-05 21:22:18 +03:00
|
|
|
volumes:
|
|
|
|
|
- "./backend:/app"
|
2025-07-06 16:46:21 +03:00
|
|
|
env_file:
|
2025-07-12 14:38:21 +03:00
|
|
|
- .env
|
2025-07-03 17:55:15 +03:00
|
|
|
environment:
|
2025-07-03 21:58:49 +03:00
|
|
|
# - GIN_MODE=release # For production
|
2025-07-06 16:46:21 +03:00
|
|
|
- GIN_MODE=debug
|
2025-07-03 22:21:37 +03:00
|
|
|
# - POSTGRES_DB=postgresql://username:password@host:port/database_name
|
2025-07-06 16:46:21 +03:00
|
|
|
- POSTGRES_DB=postgresql://postgres:postgres@db:5432/cover-letter
|
|
|
|
|
# - Environment=prod # For production
|
|
|
|
|
- Environment=dev
|
2025-07-03 17:55:15 +03:00
|
|
|
networks:
|
|
|
|
|
- cover-letter-network
|
2025-07-03 22:21:37 +03:00
|
|
|
depends_on:
|
2025-07-03 23:28:01 +03:00
|
|
|
db: # Wait for database to be ready (Pass healthcheck)
|
|
|
|
|
condition: service_healthy
|
2025-07-03 17:55:15 +03:00
|
|
|
frontend:
|
|
|
|
|
build:
|
|
|
|
|
context: ./frontend
|
|
|
|
|
dockerfile: ../Dockerfile.frontend
|
|
|
|
|
target: dev # Development stage
|
2025-07-03 21:58:49 +03:00
|
|
|
restart: unless-stopped
|
2025-07-03 17:55:15 +03:00
|
|
|
container_name: cover-letter-frontend
|
|
|
|
|
|
|
|
|
|
volumes:
|
|
|
|
|
- "./frontend:/app" # Mount frontend
|
|
|
|
|
- "/app/node_modules" # Ignore node_modules
|
2025-07-03 21:58:49 +03:00
|
|
|
networks:
|
|
|
|
|
- cover-letter-network
|
|
|
|
|
proxy:
|
|
|
|
|
image: caddy:alpine
|
|
|
|
|
restart: unless-stopped
|
2025-07-03 22:21:37 +03:00
|
|
|
container_name: cover-letter-proxy
|
2025-07-03 15:04:27 +03:00
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
- cover-letter-network
|
2025-07-03 21:58:49 +03:00
|
|
|
volumes:
|
|
|
|
|
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
|
|
|
|
ports:
|
2025-07-04 21:49:16 +03:00
|
|
|
- 8000:8080
|
2025-07-03 22:21:37 +03:00
|
|
|
depends_on:
|
|
|
|
|
- frontend
|
|
|
|
|
- backend
|
|
|
|
|
db:
|
|
|
|
|
image: postgres:13.21-alpine3.22
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
container_name: cover-letter-db
|
|
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
- cover-letter-network
|
|
|
|
|
environment:
|
|
|
|
|
- POSTGRES_USER=postgres
|
|
|
|
|
- POSTGRES_PASSWORD=postgres
|
2025-07-03 23:28:01 +03:00
|
|
|
# - POSTGRES_HOST_AUTH_METHOD=trust # No password needed
|
2025-07-03 22:21:37 +03:00
|
|
|
- POSTGRES_DB=cover-letter
|
|
|
|
|
ports:
|
|
|
|
|
- 5432:5432
|
2025-07-03 23:28:01 +03:00
|
|
|
volumes:
|
|
|
|
|
- ./data/db:/var/lib/postgresql/data
|
|
|
|
|
healthcheck:
|
|
|
|
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
2025-07-05 21:11:09 +03:00
|
|
|
interval: 2s
|
|
|
|
|
timeout: 2s
|
2025-07-03 23:28:01 +03:00
|
|
|
retries: 5
|
2025-07-03 15:04:27 +03:00
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
cover-letter-network:
|
|
|
|
|
driver: bridge
|