version: "3.9" services: db: image: postgres:15 restart: unless-stopped volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_DB: jobtracker POSTGRES_USER: jobtracker POSTGRES_PASSWORD: jobtracker ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U jobtracker -d jobtracker"] interval: 5s timeout: 5s retries: 10 api: build: context: ./api ports: - "8000:8000" environment: DATABASE_URL: "postgres://jobtracker:jobtracker@db:5432/jobtracker" volumes: - ./api:/app command: > sh -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000" depends_on: db: condition: service_healthy web: build: context: ./web ports: - "3000:3000" environment: VITE_API_URL: "http://localhost:8000" volumes: - ./web:/app - /app/node_modules depends_on: db: condition: service_healthy volumes: postgres_data: