多阶段构build – 没有这样的文件或目录
复制时,我的多阶段版本找不到/assets/css
目录。 我需要改变什么?
docker版本
版本17.06.0-ce-mac17(18432)
频道:边缘
4bb7a7dfa0
myimage:sass我在多阶段构build中使用的图像
FROM ruby:2.4.1-slim RUN mkdir /assets VOLUME /assets RUN gem install sass ENTRYPOINT ["sass"]
多阶段构buildDockerfile
请注意我在第一个映像cd /assets/css && ls && pwd
上运行的debugging命令,结果在构build阶段显示。
# 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 .
输出docker build -t myimage:css .
注意在步骤3/11的cd /assets/css && ls && pwd
的输出显示/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引擎不能find它?
这就是问题:
VOLUME /assets
每个构build步骤都是一个新的运行容器。 每个新的容器将丢弃未命名的卷中的任何丢弃物。
检查:
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
(单独运行)
- Docker容器中dnsmasq的奇怪行为
- Gradle在jenkins中失败:高山容器:UnsatisfiedLinkError:linux-amd64 / libnative-platform.so:libstdc ++。so.6:
- 编译后的二进制文件不能在Ubuntu主机上的高山docker容器中运行
- 如何在Alpine linux上添加用于nginx的Lua模块?
- 如何在高山linux安装zless?
- Docker Alpine / bin / sh没有find
- 无法在官方Docker PHP Alpine映像中安装一些PHP扩展(模块)
- 在Docker Alpine上安装seaborn
- 什么是Ubuntu的libarmadillo-dev的高山Linux等价包?