#django #docker #docker-compose
Вопрос:
Я хочу создать 2 среды. Тестирование и стандартная среда разработки. Мне нужно запустить тестовый сервер django в тестовой среде, а manage.py runserver
с другой стороны, обычный сервер. Основная среда разработки не будет использовать docker-compse.yml, а тестовая среда будет использовать test.yml. Когда я бегу docker-compose up
, перезагрузка в реальном времени работает нормально. Когда я запускаю docker-compose -f test.yml up
, тестовый сервер запускается, но docker не выполняет живые перезагрузки. Я добавляю одни и те же службы в оба файла, чтобы сократить синтаксис CLI.
докер-compose.yml
version: "3.9"
services:
web:
build:
dockerfile: ./compose/django/Dockerfile
context: .
container_name: main_app_django
env_file:
- ./.local/.env
command: compose/django/start.sh
volumes:
- .:/code
ports:
- "8000:8000"
redis:
container_name: main_app_redis
image: "redis:alpine"
command: redis-server
ports:
- "6379:6379"
celeryworker:
build:
dockerfile: ./compose/celery/Dockerfile
context: .
container_name: main_app_celery
command: celery -A app worker -l INFO
env_file:
- ./.local/.env
volumes:
- .:/code
depends_on:
- redis
тест.yml
version: "3.9"
services:
web:
build:
dockerfile: ./compose/django/Dockerfile
context: .
container_name: test_main_app_django
env_file:
- ./.local/.env
command: >
sh -c "python manage.py makemigrations amp;amp;
python manage.py migrate amp;amp; python manage.py testserver cypress/fixtures/user.json cypress/fixtures/tracks.json --addrport 0.0.0.0:8000"
volumes:
- .:/code
ports:
- "8000:8000"
redis:
container_name: test_main_app_redis
image: "redis:alpine"
command: redis-server
ports:
- "6379:6379"
celeryworker:
build:
dockerfile: ./compose/celery/Dockerfile
context: .
container_name: test_main_app_celery
command: celery -A appworker -l INFO
env_file:
- ./.local/.env
volumes:
- .:/code
depends_on:
- redis
Комментарии:
1. вы проверили, работает ли «dev» django, прежде чем пытаться запустить «тестовый» сервер?
2. Да, он работает. Я изменил несколько файлов, пока не заметил, что он не перезагружается .