Как докернизировать приложение React на контейнерах Windows
У меня есть приложение React, которое я хотел бы Dockerize для контейнеров Windows. это мой Dockerfile:
FROM stefanscherer/node-windows
# Override the base log level (info).
ENV NPM_CONFIG_LOGLEVEL warn
# Expose port for service
EXPOSE 80
# Install and configure `serve`.
RUN npm install -g serve
# Copy source code to image
COPY . .
# Install dependencies
RUN npm install
# Build app and start server from script
CMD [ "npm", "start" ]
Образ успешно создан, но когда я пытаюсь запустить его, я получаю эту ошибку:
Error response from daemon: container 3b4b9e2bab346bbd95b9dc144429026c1abbe7f4d088f1f10d4c959364f50e9e encountered an error during CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2) extra info: {"CommandLine":"npm start","WorkingDirectory":"C:\\","Environment":{"NPM_CONFIG_LOGLEVEL":"warn"},"CreateStdInPipe":true,"CreateStdOutPipe":true,"CreateStdErrPipe":true,"ConsoleSize":[0,0]}.
Я новичок в Docker, поэтому я не уверен, что что-то упустил. Есть идеи?
1 ответ
Эта ошибка, вероятно, связана с тем, что база изображенияnanoserver
в этом случае, а затемreact-scripts
не работает хорошо. Также образы докеров изstefanscherer/node-windows
не обновляется (последние версии NodeJ в этих образах — 12.x).
Из-за этого я сделал один новый образ докера с некоторыми версиями LTS, например, 14.19.0, 16.17.0.
Образ докера — henriqueholtz/node-win, где теги — это версии NodeJs.
Примечание . На данный момент у NodeJ нет официального образа для контейнера Windows.
В README в Docker Hub вы можете увидеть один пример и ссылки на некоторые статьи с другими примерами.
Посмотрите несколько статей с примерами:
- Как запустить приложение ReactJs в контейнере Windows
- Как выполнить контейнер Windows с помощью NodeJs
Ниже приведен один пример запуска вашегоcreate-react-app
, например (очевидно, вы должны изменить громкость на свою папку — используйте powershell):
docker run -t -p 3000:3000 --name=my-own-cra-windows-container -v C:\Projects\my-own-cra\:C:\app\ henriqueholtz/node-win:16.17.0 cmd /c "npm -v & node -v & npm start"