簡體   English   中英

Dockerfile COPY 由 RUN sh 腳本生成的文件

[英]Dockerfile COPY file generated by RUN sh script

我想通過使用 Docker 自動構建和執行 java spring web 服務。

我從 dockerfile 運行一個腳本,生成一個 settings.xml 文件。 我想在圖像中復制該文件,但是因為 RUN 創建了一個新容器(我認為?)構建找不到生成的文件。

這是我的 Dockerfile 的開頭:

FROM ubuntu:20.04

WORKDIR /app

COPY . .

RUN ./script.sh

COPY settings.xml /root/.m2/

還有 output...

在此處輸入圖像描述

如何復制由我的 sh 腳本生成的 settings.xml 文件?

謝謝!

COPY從主機復制到鏡像。 如果你想從一個鏡像復制到另一個鏡像,你可以使用'normal' cp命令。

沒錯,每個 RUN 語句都在單獨的 shell 中運行。但是由於您生成的文件存儲在文件系統中,因此如果您在不同的 RUN 語句中執行它,它將起作用。

但是,讓我們在一個 RUN 語句中執行此操作,以僅在圖像中獲得 1 個新層:

FROM ubuntu:20.04

WORKDIR /app

COPY . .

RUN ./script.sh && \
    cp settings.xml /root/.m2/

如果不需要將副本留在/app中,也可以使用mv移動文件。

通過執行RUN script.sh文件將在容器內生成。 因此無法使用COPY Dockerfile 命令將其復制到圖像中。 相反,您可以將mv內的文件移動到所需的目的地:

FROM ubuntu:20.04

WORKDIR /app

COPY . .

RUN ./script.sh \
  && mv /path/to/settings.xml /root/.m2/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM