docker-compose.base.yml
services:
code:
build:
context: .
dockerfile: Dockerfile
container_name: code
restart: on-failure
env_file:
- .env
networks:
- appnet
backend:
extends:
service: code
container_name: backend
ports:
- 8000:8000
restart: on-failure
command: sh -c "alembic upgrade head && python -m src.radiate.entrypoint.web"
environment:
- DB_HOST=postgresql
networks:
- appnet
depends_on:
- postgresql
- redis
postgresql:
image: postgres:17.5-bookworm
container_name: postgresql
expose:
- 5433
ports:
- 5433:5432
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
environment:
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_USER=${DB_USER}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
interval: 1s
timeout: 5s
retries: 10
networks:
- appnet
redis:
image: redis:latest
container_name: redis
ports:
- 6380:6379
networks:
- appnet
command: redis-server --bind 0.0.0.0 --requirepass "$REDIS_PASSWORD" --appendonly yes --appendfsync everysec
healthcheck:
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
interval: 1s
timeout: 5s
retries: 10
worker:
container_name: worker
build:
context: .
dockerfile: Dockerfile
env_file:
- .env
command: taskiq worker --ack-type when_saved radiate.entrypoint.broker:setup_taskiq_broker -fsd -tp **/jobs.py
depends_on:
- redis
networks:
- appnet
scheduler:
container_name: scheduler
build:
context: .
dockerfile: Dockerfile
env_file:
- .env
command: taskiq scheduler radiate.entrypoint.broker:setup_taskiq_scheduler -fsd -tp **/jobs.py
depends_on:
- redis
networks:
- appnet
volumes:
pgdata:
networks:
appnet:
driver: bridge
name: appnet
docker-compose.dev.yml
services:
backend:
extends:
file: docker-compose.base.yml
service: backend
develop:
watch:
- path: .
action: rebuild
target: .
depends_on:
- postgresql
- redis
networks:
- appnet
postgresql:
extends:
file: docker-compose.base.yml
service: postgresql
networks:
- appnet
redis:
extends:
file: docker-compose.base.yml
service: redis
networks:
- appnet
worker:
extends:
file: docker-compose.base.yml
service: worker
depends_on:
- redis
scheduler:
extends:
file: docker-compose.base.yml
service: scheduler
depends_on:
- redis
volumes:
pgdata:
networks:
appnet:
driver: bridge
name: appnet
Dockerfile
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy
ENV UV_PYTHON_DOWNLOADS=0
WORKDIR /home/app
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
uv sync --locked --no-install-project --no-dev
COPY . /home/app
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --locked --no-dev
ENV PATH="/home/app/.venv/bin:$PATH
У меня по какой то причине начали дублироваться процессы или че это вообще такое я хз. Я запускаю докер композ и у меня в консоли все дублируется, хотя процессов если смотреть через docker ps не прибавилось.
Запускаю командой - docker compose -f docker-compose.dev.yml up --build