Dockerfile构建镜像失败?

FROM node:14
WORKDIR /front
COPY package*.json /front/
RUN npm install
COPY . /front
RUN npm run build
FROM nginx
COPY default.conf /etc/nginx/conf.d/City.conf
COPY ./dist /usr/share/nginx/City

这是我编写的Dockerfile文件,但是构建镜像的时候发现没有执行npm install,自然也不会有dist文件,不知道是哪里写的有问题,请教一下大家

image.png

阅读 1.8k
1 个回答

你下面的COPY ./dist /usr/share/nginx/City
应该要加上 --form 参数,完整的例子:

FROM node:14
WORKDIR /front
COPY package*.json /front/
RUN npm install
COPY . /front
RUN npm run build
FROM nginx
COPY default.conf /etc/nginx/conf.d/City.conf
COPY --form=0 /front/dist /usr/share/nginx/City

为什么要这样,首先你这个是一个多阶段构建,你在node:14这个步骤里面,已经执行了install和build,但是build后的文件是生成在这个阶段的node容器里面,不是在当前工作目录里面。 如果你需要在下一个阶段里拿到上一个阶段容器里面的文件,就需要在COPY的时候,指定从哪里拷贝。不指定的话,默认情况下就会从容器构建的工作目录下找。这样自然就找不到文件了。

官方的文档

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题