Dockerizing приложение Node.js на Microsoft/ Наносервер
Я новичок в Докере. У нас есть служба REST на основе узлов, и я пытаюсь создать образ докера, чтобы я мог легко развернуть службу на агентах сборки. У меня есть компакт-диск в папку, где у нас есть package.json службы и добавленный ниже файл Docker. Я использую Win 10 build 14xxxxx и использую контейнер Docker для Windows. Нужно ли сначала извлекать образ узла и устанавливать его на наносервер?
FROM microsoft/nanoserver
# Create app directory
RUN powershell New-Item -ItemType directory -Path \usr\src\app
WORKDIR \usr\src\app
# Install app dependencies
COPY package.json \usr\src\app
RUN npm install
# Bundle app source
COPY . \usr\src\app
EXPOSE 8080
CMD [ "npm", "start" ]
Когда я бегу
docker build -t mycompany/node-engine
Я получаю ошибку ниже
'npm' is not recognized as an internal or external command,
operable program or batch file.
Ниже полный вывод
Sending build context to Docker daemon 24.67 MB
Step 1/8 : FROM microsoft/nanoserver
---> a943c29f0046
Step 2/8 : RUN powershell New-Item -ItemType directory -Path \usr\src\app
---> Using cache
---> f1df2109ddd6
Step 3/8 : WORKDIR \usr\src\app
---> Using cache
---> 66d552a76612
Step 4/8 : COPY package.json \usr\src\app
---> Using cache
---> fcf9663854c3
Step 5/8 : RUN npm install
---> Running in b47b47ad1439
'npm' is not recognized as an internal or external command,
operable program or batch file.
The command 'cmd /S /C npm install' returned a non-zero code: 1
Заранее спасибо
2 ответа
Похоже, вы могли бы воспользоваться новыми командами, которые они добавили в образ Nano:
curl.exe и tar.exe (спасибо, Unix)
FROM mcr.microsoft.com/windows/nanoserver:1809
#Download the package we want and unzip it to our destination
RUN curl.exe -o node.zip https://nodejs.org/dist/v9.2.0/node-v9.2.0-win-x64.zip && \
mkdir "C:\\Program Files\\node" && \
tar.exe -xf node.zip -C "C:\\Program Files\\node" --strip-components=1
#Add node to PATH
ENV PATH “C:\\Program Files\\node:%PATH%”
#Start Node
#CMD [ “node.exe” ]
Я знаю, что опоздал на вечеринку здесь, но я пришел сюда в поисках ответа на тот же вопрос.
Немного исследований позже, и я обнаружил, что существует множество сторонних образов нано-докеров узлов и серверов, которые люди создали.
Например, это выглядит как хороший чистый: https://github.com/a11smiles/docker-nano-nodejs/blob/master/Dockerfile
Если у вас есть проблемы с использованием несколько случайных / неподдерживаемых изображений Docker, а не официальных изображений (многие коммерческие организации делают), вы можете по крайней мере взглянуть на Dockerfile и узнать, как это было сделано (и, возможно, приписать источник:)
Для этого в Docker Hub есть изображение, и вам просто нужно использовать этот образ, который был построен поверх нано-сервера: