|
|
|
|
|
|
|
|
|
|
|
version: '3.8' |
|
|
|
|
|
services: |
|
|
|
|
|
db: |
|
|
image: postgres:15-alpine |
|
|
container_name: voiceforge-db |
|
|
environment: |
|
|
POSTGRES_USER: postgres |
|
|
POSTGRES_PASSWORD: postgres |
|
|
POSTGRES_DB: voiceforge |
|
|
volumes: |
|
|
- postgres_data:/var/lib/postgresql/data |
|
|
ports: |
|
|
- "5432:5432" |
|
|
healthcheck: |
|
|
test: [ "CMD-SHELL", "pg_isready -U postgres" ] |
|
|
interval: 10s |
|
|
timeout: 5s |
|
|
retries: 5 |
|
|
|
|
|
|
|
|
redis: |
|
|
image: redis:7-alpine |
|
|
container_name: voiceforge-redis |
|
|
ports: |
|
|
- "6379:6379" |
|
|
volumes: |
|
|
- redis_data:/data |
|
|
healthcheck: |
|
|
test: [ "CMD", "redis-cli", "ping" ] |
|
|
interval: 10s |
|
|
timeout: 5s |
|
|
retries: 5 |
|
|
|
|
|
|
|
|
backend: |
|
|
build: |
|
|
context: ../../backend |
|
|
dockerfile: ../deploy/docker/Dockerfile.backend |
|
|
container_name: voiceforge-backend |
|
|
environment: |
|
|
- DATABASE_URL=postgresql://postgres:postgres@db:5432/voiceforge |
|
|
- REDIS_URL=redis://redis:6379/0 |
|
|
- GOOGLE_APPLICATION_CREDENTIALS=/app/credentials/google-cloud-key.json |
|
|
- DEBUG=true |
|
|
- API_HOST=0.0.0.0 |
|
|
- API_PORT=8000 |
|
|
volumes: |
|
|
- ../../backend/app:/app/app |
|
|
- ../../credentials:/app/credentials:ro |
|
|
- uploads_data:/app/uploads |
|
|
ports: |
|
|
- "8000:8000" |
|
|
depends_on: |
|
|
db: |
|
|
condition: service_healthy |
|
|
redis: |
|
|
condition: service_healthy |
|
|
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload |
|
|
|
|
|
|
|
|
worker: |
|
|
build: |
|
|
context: ../../backend |
|
|
dockerfile: ../deploy/docker/Dockerfile.backend |
|
|
container_name: voiceforge-worker |
|
|
environment: |
|
|
- DATABASE_URL=postgresql://postgres:postgres@db:5432/voiceforge |
|
|
- REDIS_URL=redis://redis:6379/0 |
|
|
- GOOGLE_APPLICATION_CREDENTIALS=/app/credentials/google-cloud-key.json |
|
|
volumes: |
|
|
- ../../backend/app:/app/app |
|
|
- ../../credentials:/app/credentials:ro |
|
|
- uploads_data:/app/uploads |
|
|
depends_on: |
|
|
db: |
|
|
condition: service_healthy |
|
|
redis: |
|
|
condition: service_healthy |
|
|
command: celery -A app.workers.celery_app worker --loglevel=info |
|
|
|
|
|
|
|
|
frontend: |
|
|
build: |
|
|
context: ../../frontend |
|
|
dockerfile: ../deploy/docker/Dockerfile.frontend |
|
|
container_name: voiceforge-frontend |
|
|
environment: |
|
|
- API_BASE_URL=http://backend:8000 |
|
|
volumes: |
|
|
- ../../frontend:/app |
|
|
ports: |
|
|
- "8501:8501" |
|
|
depends_on: |
|
|
- backend |
|
|
|
|
|
volumes: |
|
|
postgres_data: |
|
|
redis_data: |
|
|
uploads_data: |
|
|
|
|
|
|
|
|
networks: |
|
|
default: |
|
|
name: voiceforge-network |
|
|
|