2017-07-14 36 views
2

我的多級構建在複製它時找不到/assets/css目錄。我需要改變什麼?多級構建 - 無此類文件或目錄

泊塢版本

版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上運行的調試命令,結果在構建階段顯示。輸出docker build -t myimage:css .

通知

# 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 

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引擎不能找到它?

+0

什麼版本的泊塢窗您使用的是(一個獨立的運行)?你使用17.06CE還是17.05CE?如果您使用的是舊版本,則不支持多階段構建。 –

回答

3

這就是問題所在:

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 

+0

非常有趣!我通過將Sass源文件編譯到Docker未命名卷('/ css',而不是'/ assets/css')之外的目錄來解決此問題。謝謝。 – sargas

相關問題