services: backend: build: context: ./backend dockerfile: Dockerfile container_name: bim-backend restart: unless-stopped ports: - "8000:8000" environment: - DATABASE_URL=postgresql+asyncpg://bim:${DB_PASSWORD}@db:5432/bim - UPLOAD_DIR=/data/uploads volumes: - ./backend:/app - upload_data:/data/uploads depends_on: db: condition: service_healthy networks: - bim-internal - web command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload frontend: build: context: ./frontend dockerfile: Dockerfile container_name: bim-frontend restart: unless-stopped ports: - "5173:5173" volumes: - ./frontend:/app - /app/node_modules networks: - web command: npm run dev -- --host 0.0.0.0 db: image: postgres:16-alpine container_name: bim-db restart: unless-stopped environment: - POSTGRES_USER=bim - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=bim volumes: - bim_db:/var/lib/postgresql/data networks: - bim-internal healthcheck: test: ["CMD-SHELL", "pg_isready -U bim"] interval: 5s timeout: 5s retries: 5 volumes: bim_db: upload_data: networks: web: external: true bim-internal: driver: bridge