66 lines
1.7 KiB
YAML
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
|