68 lines
1.5 KiB
YAML
68 lines
1.5 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# Development FastAPI Application with hot reload
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: ljwx-fastapi-dev
|
|
ports:
|
|
- "${PORT:-5115}:8000"
|
|
environment:
|
|
- DATABASE_HOST=postgres
|
|
- DATABASE_PORT=5432
|
|
- DATABASE_NAME=${DATABASE_NAME:-template}
|
|
- DATABASE_USER=${DATABASE_USER:-postgres}
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD:-postgres}
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- DEBUG=true
|
|
- RELOAD=true
|
|
depends_on:
|
|
- postgres
|
|
- redis
|
|
volumes:
|
|
- .:/app # Mount entire project for hot reload
|
|
- ./logs:/app/logs
|
|
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
|
restart: unless-stopped
|
|
networks:
|
|
- ljwx-network
|
|
|
|
# PostgreSQL Database
|
|
postgres:
|
|
image: postgres:15-alpine
|
|
container_name: ljwx-postgres-dev
|
|
environment:
|
|
- POSTGRES_DB=${DATABASE_NAME:-template}
|
|
- POSTGRES_USER=${DATABASE_USER:-postgres}
|
|
- POSTGRES_PASSWORD=${DATABASE_PASSWORD:-postgres}
|
|
ports:
|
|
- "5432:5432"
|
|
volumes:
|
|
- postgres-data-dev:/var/lib/postgresql/data
|
|
restart: unless-stopped
|
|
networks:
|
|
- ljwx-network
|
|
|
|
# Redis Cache
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: ljwx-redis-dev
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis-data-dev:/data
|
|
restart: unless-stopped
|
|
networks:
|
|
- ljwx-network
|
|
|
|
networks:
|
|
ljwx-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
postgres-data-dev:
|
|
redis-data-dev:
|