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 есть изображение, и вам просто нужно использовать этот образ, который был построен поверх нано-сервера:

https://hub.docker.com/r/compulim/nanoserver-node/

Другие вопросы по тегам