Todo-Web / docker-compose.yml
Claude Code - Backend Implementation Specialist
Add complete FastAPI Todo application with Docker support
1941764
version: '3.8'
services:
# PostgreSQL Database
db:
image: postgres:15-alpine
container_name: todo-db
environment:
POSTGRES_USER: todouser
POSTGRES_PASSWORD: todopassword
POSTGRES_DB: tododb
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U todouser"]
interval: 10s
timeout: 5s
retries: 5
# FastAPI Backend
api:
build:
context: .
dockerfile: Dockerfile
container_name: todo-api
environment:
DATABASE_URL: postgresql://todouser:todopassword@db:5432/tododb
JWT_SECRET_KEY: ${JWT_SECRET_KEY:-your-super-secret-key-change-this-min-32-characters-long}
JWT_ALGORITHM: HS256
ACCESS_TOKEN_EXPIRE_MINUTES: 30
CORS_ORIGINS: http://localhost:3000,http://localhost:3001
SMTP_HOST: ${SMTP_HOST:-smtp.gmail.com}
SMTP_PORT: ${SMTP_PORT:-587}
SMTP_USERNAME: ${SMTP_USERNAME}
SMTP_PASSWORD: ${SMTP_PASSWORD}
SMTP_USE_TLS: ${SMTP_USE_TLS:-true}
EMAIL_FROM: ${EMAIL_FROM}
EMAIL_FROM_NAME: ${EMAIL_FROM_NAME:-Todo Application}
FRONTEND_URL: ${FRONTEND_URL:-http://localhost:3000}
PASSWORD_RESET_TOKEN_EXPIRY_MINUTES: 15
PASSWORD_RESET_MAX_REQUESTS_PER_HOUR: 3
COHERE_API_KEY: ${COHERE_API_KEY}
ports:
- "8000:8000"
depends_on:
db:
condition: service_healthy
volumes:
- ./src:/app/src
restart: unless-stopped
volumes:
postgres_data: