首页 文章

在microsoft / nanoserver上对Node.js应用程序进行Docker化

提问于
浏览
0

我是Docker的新手 . 我们有一个基于节点的REST服务,我正在尝试创建一个docker镜像,以便我可以轻松地在构建代理上部署服务 . 我有CD到我们有服务的package.json的文件夹,并添加到docker文件下面 . 我在Win 10 build 14xxxxx上并使用Docker windows容器 . 我是否需要先拉出节点图像并将其安装在nanoserver上?

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

提前致谢

3 回答

  • 1

    我知道我在这里参加派对已经很晚了,但是我来到这里寻找同一个问题的答案 .

    稍后进行了一些研究,我发现人们已经构建了各种第三方节点服务器nano docker镜像 .

    例如,这看起来很干净:https://github.com/a11smiles/docker-nano-nodejs/blob/master/Dockerfile

    如果您在使用某些随机/不支持的泊坞窗图像而不是官方图像(许多商业组织)时遇到问题,您至少可以查看Dockerfile并了解它是如何完成的(并且可能属于源:)

  • -1

    看起来你可以利用他们添加到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” ]
    
  • 0

    在docker hub中有一个用于此目的的图像,您只需要使用构建在nano服务器之上的此图像:

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

相关问题