Docker контейнер узла не может быть запущен, но работает локально без docker - PullRequest
0 голосов
/ 23 марта 2020

Обновление 3/23: я использовал авторский пакет. json, npm установите на мою Ma c, обновите реагирующие скрипты до 3.4.0 и Dockerfile, чтобы исправить некоторые проблемы, и теперь эта версия работает: https://github.com/harrywang/my-flask-react-auth/tree/6e65a7deaf89244a41a7c91843f07f4756956f95 однако это не объясняет, почему предыдущая версия не работала.

Обновление 3/23: если я только заменю пакет. json и пакет-блокировку. json в https://github.com/harrywang/my-flask-react-auth/tree/master/services/client с версиями авторов в https://gitlab.com/testdriven/flask-react-auth/-/tree/master/services%2Fclient , это будет работать. Не знаю почему.

В соответствии с руководством по https://testdriven.io/courses/auth-flask-react/

Docker 2.2.0.4 Рабочий стол на Ма c

Мой код репо на https://github.com/harrywang/my-flask-react-auth, где вы можете увидеть Dockerfile и docker -compose.yml, вы можете клонировать и запустить docker-compose up -d --build, чтобы воспроизвести мою проблему.

Когда я запускаю docker-compose up -d --build, flask и контейнеры базы данных работают хорошо, но контейнер узла завершает работу с кодом ошибки 0 при «Запуске сервера разработки ...»

Одна вещь, которую я заметил, это то, что я не вижу информации, связанной с веб-пакетом [wds] локально на моей маме c. Я не знаю кто они.

enter image description here

enter image description here

но когда я go на / services / client и запускаю npm start, сервер узла запускается и хорошо работает локально.

Во время процесса построения docker сообщение об ошибке отсутствует. Я потратил несколько часов на это и не могу понять это. Пожалуйста помоги!! Большое спасибо !!

Тем не менее, репо автора на https://gitlab.com/testdriven/flask-react-auth со старыми версиями не имеет этой проблемы: enter image description here

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

У меня была такая же проблема. В настоящее время я прохожу тот же курс. Я сделал все точно так же, как написано в руководстве. Я смог запустить два 2-х контейнера, третий (flask -react-auth_client_1) остановился с 0.

Сначала я попытался войти в контейнер и выполнить docker run -it --entrypoint sh <image>, а затем npm start

Проблем не обнаружено. Поэтому я провел небольшое исследование.

Очевидно, с react-scripts@3.4.0 или react-scripts@3.4.1+ невозможно работать в фоновом режиме без включенного флага CI.

Мое исправление было добавить CI=true в docker -compose.yml в среде client>.

I go идея из https://github.com/facebook/create-react-app/issues/8688

0 голосов
/ 23 марта 2020

Кажется, что в клиентском приложении Dockerfile отсутствует следующая часть:

COPY src /usr/src/app/src
COPY public /usr/src/app/public

Это скопирует исходные папки в образ Docker. Эти две строки могут быть установлены над следующей строкой в вашем Dockerfile.

Способ устранения таких проблем заключается в выполнении docker run -it --entrypoint sh <image> для раскрутки нового контейнера и получения оболочки к этому. Затем вы можете запустить команду, которую сервер намеревался запустить (npm start в нашем случае). Оттуда вы можете обнаружить ошибки, которые, возможно, не были переданы в docker -compose. В нашем случае ошибка была следующей:

react-scripts start Could not find a required file. 
Name: index.html Searched in: /usr/src/app/public
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...