从NodeJS 8.2升级到9.1后,我遇到运行Docker容器的问题。这是我得到的信息。
我使用了我在Docker Hub中找到的Dockerfile,但收到了无法找到package.json的错误。所以我评论它并使用我在NodeJS网站上找到的那个。
以下是Docker文件:
FROM node:9.1.0
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ONBUILD ARG NODE_ENV
ONBUILD ENV NODE_ENV $NODE_ENV
ONBUILD COPY package*.json ./
ONBUILD RUN npm install && npm cache clean --force
ONBUILD COPY . /usr/src/app
CMD [ "npm", "start" ]
感谢更有经验的用户提供的帮助。
答案 0 :(得分:1)
您的docker run
命令语法错误。图像名称后面的所有内容都用于覆盖容器中运行的命令。因此docker run myimage -d
将尝试在容器内运行-d
,而docker run -d myimage
将使用-d
选项运行您的容器以使用docker run(分离模式)。
答案 1 :(得分:0)
您引用的Dockerfile旨在用作父图像,以便轻松实现应用程序的泊坞化。
因此,要对您的nodejs应用程序进行dockerize,您需要使用所述dockerfile创建的docker镜像创建dockerfile。
只要使用此特定图像构建新图像作为父图像(ONBUILD
指令),就会执行FROM
指令。 More info
我从未使用过这样的图像,但从它的外观来看,用FROM
指令引用图像就足够了,然后通过构建参数提供NODE_ENV
。 / p>
要添加到项目中的dockerfile:
FROM this_image:9.1
如何构建应用程序映像:
docker build -t IMAGE_NAME:TAG --build-arg NODE_ENV=production .