HR-ATS-Portal/docker-compose.dev.yml

66 lines
1.7 KiB
YAML

# Live-code overlay. Mounts the source folders into the running containers, so what
# executes is what is on disk on the host — edit, save, uvicorn reloads.
#
# docker compose -f docker-compose.yml -f docker-compose.dev.yml up
#
# The CV attachments mount from the base file still applies: compose merges volumes
# by target path, and /app/inbox/decoded_attachments is nested under the /app mount,
# so the daemon mounts the parent first and the attachments folder on top.
#
# Two mounts per Python service, not one: /app is the backend tree and /app/app is the
# bulk-ats engine that backend/job/candidate imports. Mounting only ./backend over
# /app would hide the engine baked into the image and every worker would fail on
# import.
#
# The frontend stays as the built nginx image — a Vite dev server wants node_modules
# on the mount, which is slow and fragile across a Windows bind mount. Run
# `npm run dev` on the host for the frontend loop.
services:
backend-api:
command:
["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
volumes:
- ./backend:/app
- ./app:/app/app
ats-engine:
command:
[
"uvicorn",
"app.main:create_app",
"--factory",
"--host",
"0.0.0.0",
"--port",
"8100",
"--reload",
]
volumes:
- ./app:/srv/app
taskiq-worker:
volumes:
- ./backend:/app
- ./app:/app/app
taskiq-scheduler:
volumes:
- ./backend:/app
- ./app:/app/app
taskiq-cv-worker:
volumes:
- ./backend:/app
- ./app:/app/app
taskiq-cv-scheduler:
volumes:
- ./backend:/app
- ./app:/app/app
taskiq-mailbox-sync-worker:
volumes:
- ./backend:/app
- ./app:/app/app