Почему npm немедленно начинает закрывать мой интерфейсный контейнер с чистым кодом выхода? - PullRequest
1 голос
/ 08 апреля 2020

⬇ Контекст ⬇

У меня есть приложение, созданное благодаря 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, находясь внутри контейнера внешнего интерфейса, это не удовлетворяет, оно не кажется правильным.

Большое спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...