多阶段构建-没有此类文件或目录

守卫

我的多阶段构建/assets/css在复制目录时找不到目录。我需要更改什么?

Docker版本

版本17.06.0-ce-mac17(18432)

通道:边缘

4bb7a7dfa0

myimage:sass我在多阶段构建中使用的图像

FROM ruby:2.4.1-slim

RUN mkdir /assets
VOLUME /assets

RUN gem install sass
ENTRYPOINT ["sass"]

多阶段构建Dockerfile

注意我在第一个图像上运行的调试命令cd /assets/css && ls && pwd,结果在构建阶段中显示。

# Compile Sass
FROM myimage/sass AS builder
COPY app/assets/sass /assets/sass
RUN sass --update --force --sourcemap=none --stop-on-error /assets/sass:/assets/css &&\
  # sass directory isn't needed
  rm -r assets/sass &&\
  # debugging: check /assets/css exists inside the container
  cd /assets/css && ls && pwd

FROM alpine:3.6
WORKDIR /app
RUN mkdir /app/logs
VOLUME ["/app/logs"]
COPY --from=builder /assets/css /app/assets/css
EXPOSE 80
CMD ["./bin/bash"]
Raw

输出 docker build -t myimage:css .

请注意cd /assets/css && ls && pwd步骤3/11的输出,显示该/assets/css目录存在并且其中包含一个main.css文件

Step 1/11 : FROM myimage:sass AS builder
 ---> 7c6662186d55
Step 2/11 : COPY app/assets/sass /assets/sass
 ---> 76b5d86846b8
Removing intermediate container ee74d16617b4
Step 3/11 : RUN sass --update --force --sourcemap=none --stop-on-error /assets/sass:/assets/css &&  rm -r assets/sass &&  cd /assets/css && pwd
 ---> Running in 83dc591edc5c
  directory /assets/css
      write /assets/css/main.css
main.css
/assets/css
 ---> 3939f46fb355
Removing intermediate container 83dc591edc5c
Step 4/11 : FROM alpine:3.6
 ---> 7328f6f8b418
Step 5/11 : WORKDIR /app
 ---> 19ad596f9fc1
Removing intermediate container 790fac2040f1
Step 6/11 : RUN mkdir /app/logs
 ---> Running in cb66151a4694
 ---> 18d6c4970d04
Removing intermediate container cb66151a4694
Step 7/11 : VOLUME /app/logs
 ---> Running in b8a98a38a054
 ---> fa68603ccf30
Removing intermediate container b8a98a38a054
Step 8/11 : COPY --from=builder /assets/css /app/assets/css
COPY failed: stat /var/lib/docker/aufs/mnt/0ddcc250ed9c4eb1de46305e62cb2303274b027b2c9b0ddd09471fce3c3ed619/assets/css: no such file or directory

那么为什么不能/assets/css复制到最终图像中呢?Docker引擎为什么找不到它?

罗伯特

这就是问题:

VOLUME /assets

每个构建步骤都是一个新的运行容器。每个新容器将丢弃未命名卷中的所有滴。

用以下方法检查:

RUN sass --update --force --sourcemap=none --stop-on-error /assets/sass:/assets/css &&\
  # sass directory isn't needed
  rm -r assets/sass
RUN cd /assets/css && ls && pwd

(单独运行)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

多阶段Docker构建COPY失败,找不到文件

Docker 多阶段构建:COPY --from=builder 失败:没有这样的文件或目录

Docker多阶段:如何在阶段之间复制构建的文件?

多阶段构建无法从上一阶段复制文件

Docker构建不会在构建多阶段Docker文件时删除临时映像

无法在多阶段Docker构建中复制MariaDB数据目录

多阶段Docker构建:统计信息报告NVIDIA文件不存在

通过minikube构建Docker多阶段映像时出错:找不到文件

Docker`文件不存在`多阶段构建COPY命令错误

Docker具有不同项目的多阶段构建

Eclipse:构建后没有此类文件或目录

Xcode错误:构建时没有此类文件或目录

尝试构建ecolab时“没有此类文件或目录”

如何在保留符号链接的同时在多阶段Docker构建的各个阶段之间复制库文件?

在 Docker 多阶段构建的构建步骤中包含 .git 文件夹是否存在安全风险?

使用--target标志构建多阶段Dockerfile会构建所有阶段,而不仅仅是指定的阶段

Azure 管道,多阶段 YAML 管道在构建服务器上使用相同的工作目录。怎么不腐

Golang docker多阶段构建无法运行:exec:“ go”:在$ PATH中找不到可执行文件

Docker多阶段构建

Android Studio设置用于构建的节点目录(原因:错误= 2,没有此类文件或目录)

使用多阶段docker文件输出多个图像

尝试构建Darknet时出现“ opencv2:没有此类文件或目录”的问题?

弹性beanstalk:构建期间未处理的异常:[Errno 2]没有此类文件或目录

docker-compose构建失败,没有此类文件或目录

来自源的Apache Httpd构建:致命错误:expat.h:没有此类文件或目录

在Mac ...上构建F#。mcs:没有此类文件或目录

构建dsploit时,libnet.h没有此类文件或目录

泊坞窗:构建映像后没有此类文件或目录

Dockerfile中的Docker构建显示“ ADD失败-没有此类文件或目录”