services: backend: build: context: . dockerfile: Dockerfile hostname: backend command: > sh -c "python manage.py migrate --noinput && python manage.py runserver 0.0.0.0:8000" volumes: - .:/app ports: - "8000:8000" env_file: - path: .env required: false environment: POSTGRES_HOST: database depends_on: database: condition: service_healthy # Postgres-backed background tasks. Same image, different entrypoint. worker: build: context: . dockerfile: Dockerfile command: python manage.py procrastinate worker volumes: - .:/app env_file: - path: .env required: false environment: POSTGRES_HOST: database depends_on: backend: condition: service_started database: image: postgres:16 hostname: database environment: POSTGRES_DB: ${POSTGRES_DATABASE:-sarlink} POSTGRES_USER: ${POSTGRES_USER:-sarlink} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} volumes: - pgdata:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER:-sarlink}"] interval: 5s timeout: 3s retries: 10 volumes: pgdata: