version: '3.8'
services:
backend:
build:
context: ./backend/
dockerfile: Dockerfile
command: bash -c "alembic upgrade head && python main.py"
volumes:
- .:/usr/src
ports:
- "5000:5000"
container_name: backend
environment:
- DATABASE_URL=postgresql+asyncpg://postgres:postgres@db:5432/db
depends_on:
db:
condition: service_healthy
networks:
- mynetwork
frontend:
build:
context: ./frontend/
dockerfile: Dockerfile
restart: always
volumes:
- ./frontend:/app
container_name: frontend
networks:
- mynetwork
db:
image: postgres:15.3
restart: always
expose:
- 5432
healthcheck:
test: [ "CMD", "pg_isready", "-U", "postgres", "-d", "db" ]
interval: 10s
timeout: 5s
retries: 5
container_name: db
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=db
networks:
- mynetwork
nginx:
image: nginx:alpine
container_name: nginx
restart: always
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "80:80"
depends_on:
- backend
- frontend
networks:
- mynetwork
command: /bin/sh -c "while ! nc -z backend 5000; do sleep 1; done; nginx -g 'daemon off;'"
networks:
mynetwork:
driver: bridge