diff --git a/Makefile b/Makefile index 652ea49..170f43e 100644 --- a/Makefile +++ b/Makefile @@ -91,8 +91,9 @@ dj_run: dj_test: $(MANAGE) test --settings=MyPointVPN.settings.test +# по умолчанию dramatiq берет процессы по числу ядер: для разработки хватает одного потока dj_worker: - $(MANAGE) rundramatiq + $(MANAGE) rundramatiq --processes 1 --threads 1 # секреты в .env: дописывает только отсутствующие и пустые, FIELD_ENCRYPTION_KEYS не перезаписывает dj_secrets: @@ -123,7 +124,8 @@ docker_up: DEV_SERVICES := postgres rabbitmq telegram telegram-files dev: - docker compose up -d $(DEV_SERVICES) + @# --wait: rabbitmq до healthy, иначе воркер стучится в еще не открытый порт + docker compose up -d --wait $(DEV_SERVICES) @until docker compose exec -T postgres pg_isready -q; do sleep 1; done $(MANAGE) migrate --noinput @# Ctrl+C получают оба процесса diff --git a/docker-compose.yaml b/docker-compose.yaml index 91a6ced..51a699b 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -61,6 +61,13 @@ services: - "127.0.0.1:15672:15672" volumes: - rabbitmq_data:/var/lib/rabbitmq + # docker-proxy принимает TCP еще до старта брокера и сразу рвет соединение: ждем, когда AMQP-порт реально слушается + healthcheck: + test: [ "CMD", "rabbitmq-diagnostics", "-q", "check_port_connectivity" ] + interval: 30s + timeout: 10s + start_period: 60s + start_interval: 1s postgres: image: docker.local/postgres:16.15-alpine3.23 @@ -108,7 +115,7 @@ services: migrate: condition: service_completed_successfully rabbitmq: - condition: service_started + condition: service_healthy telegram: condition: service_started telegram-files: @@ -125,7 +132,7 @@ services: migrate: condition: service_completed_successfully rabbitmq: - condition: service_started + condition: service_healthy volumes: telegram-bot-api-data: