当前位置: 首页 > 知识库问答 >
问题:

docker - Dockerfile构建镜像失败?

方季同
2023-05-02
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个答案

阎祖鹤
2023-05-02

你下面的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的时候,指定从哪里拷贝。不指定的话,默认情况下就会从容器构建的工作目录下找。这样自然就找不到文件了。

官方的文档

 类似资料:
  • 本文向大家介绍Docker如何使用Dockerfile构建镜像,包括了Docker如何使用Dockerfile构建镜像的使用技巧和注意事项,需要的朋友参考一下 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和

  • 功能是使用一个基础的操作系统,然后执行一个 shell 脚本。.dockerignore 是空的,删除了或者加内容依然会报错,应该对构建是否成功没有影响。 shell 脚本 报了以下的错误 如果是使用官方文档提供的应用例子,按流程执行是没有问题的。例如 这是没有问题的 这个简单例子为什么会报错? 好像解决了问题,但是问题的原因更加摸不着头脑,就是换一个目录就没有问题了

  • 下面我们以microservice-discovery-eureka项目为例,我们首先执行 mvn clean package # 使用Maven打包项目 将项目构建成jar包:microservice-discovery-eureka-0.0.1-SNAPSHOT.jar ,那幺如果我们想要启动项目则只需要在microservice-discovery-eureka-0.0.1-SNAPSHOT

  • 本文向大家介绍通过Dockerfile构建Docker镜像的方法步骤,包括了通过Dockerfile构建Docker镜像的方法步骤的使用技巧和注意事项,需要的朋友参考一下 Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. Dockerfile支持Shell类的行尾添加"\"的命令换行方式,以及

  • 本文向大家介绍Docker镜像构建原理解析(不装docker也能构建镜像),包括了Docker镜像构建原理解析(不装docker也能构建镜像)的使用技巧和注意事项,需要的朋友参考一下 在devops流程里面 构建镜像是一个非常重要的过程,一般构建镜像是写dockerfile文件然后通过docker client来构建的image。 docker client 会先检查本地有没有image,如果没有

  • 本文向大家介绍如何基于Dockerfile构建tomcat镜像,包括了如何基于Dockerfile构建tomcat镜像的使用技巧和注意事项,需要的朋友参考一下 dockerfile 是用来构建docker镜像的文件!命令参数脚本! 构建步骤: 编写一个dockerfile 文件 docker build 构建成一个镜像 docker run 运行镜像 docker push 发布镜像(Docker