我是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
先谢谢
答案 0 :(得分:1)
我知道我在这里参加聚会迟到了,但是我是来这里寻找相同问题的答案的。
稍后进行了一些研究,我发现人们已经构建了各种各样的第三方节点+服务器nano docker映像。
例如,这看起来很干净: https://github.com/a11smiles/docker-nano-nodejs/blob/master/Dockerfile
如果您在使用一些随机的/不受支持的Docker映像而不是官方映像时遇到问题(许多商业组织都这样做),您至少可以查看Dockerfile并了解其工作方式(也许归因于来源:)
答案 1 :(得分:0)
您似乎可以利用它们添加到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” ]
答案 2 :(得分:-1)
在docker hub中有一个用于此目的的图像,您只需要使用构建在nano服务器之上的图像: