⬇ Контекст ⬇
У меня есть приложение, созданное благодаря docker-compose
с тремя службами следующим образом:
- бэкэнд:
django
REST API, - frontend:
react.js
, nginx
для проксирования всего.
Мой вопрос касается внешнего интерфейса только в среде разработчика, а точнее о сервере разработки, который выполняет что-то странное, что я не в состоянии понять.
⬇ Проблема, с которой я сталкиваюсь ⬇
Когда я запускаю docker-compose nginx up
во время регистрации службы внешнего интерфейса, сервер разработки выдаст (как и ожидалось) Starting the development server...
, но заставит мой интерфейсный сервис немедленно закрыться с чистым выходом (код 0) (как будто мой entrypoint.dev.sh
достиг своего конца). Но раньше этого не происходило, сервер разработки был настроен, и мой интерфейсный сервис мог работать так, как ожидалось.
Я заметил, что если я добавлю sleep 1000m
в конце моего entrypoint.dev.sh
тогда я попаду внутрь контейнера docker exec -it frontend sh
, я смогу запустить npm start
и поддерживать сервер разработки в должном порядке.
Я не знаю, что изменилось в моей настройке. Может быть, обновление моего клиента MacOS Docker? Даже не уверен.
⬇ Моя конфигурация ⬇
Так определяется мой внешний интерфейс через мой docker-compose.yml
:
frontend:
build:
context: ./frontend
dockerfile: dev.Dockerfile
ports:
- 3000:80
environment:
VAR: STUFF
[...]
volumes:
- ./frontend/src:/app/frontend/src
- ./frontend/entrypoint.dev.sh:/app/frontend/entrypoint.dev.sh
- ./frontend/package.json:/app/frontend/package.json
entrypoint: /bin/sh /app/frontend/entrypoint.dev.sh
Мой entrypoint.dev.sh
выглядит так:
#!/bin/sh
echo "FRONTEND - DEV"
npm install -g npm
npm install
npm start
⬇ Вопрос ⬇
Знаете ли вы, почему я сталкиваюсь с таким поведением? ? Я потратил слишком много времени, пытаясь выяснить, в чем заключалась проблема, и даже если теперь я могу запускать сервер dev, находясь внутри контейнера внешнего интерфейса, это не удовлетворяет, оно не кажется правильным.
Большое спасибо за вашу помощь!