我想使用 Docker 自動構建和執行 java spring web 服務。
我從生成 settings.xml 檔案的 dockerfile 運行腳本。我想在影像中復制該檔案,但是因為 RUN 創建了一個新容器(我認為?),構建找不到生成的檔案。
這是我的 Dockerfile 的開頭:
FROM ubuntu:20.04
WORKDIR /app
COPY . .
RUN ./script.sh
COPY settings.xml /root/.m2/
還有輸出...

如何復制我的 sh 腳本生成的 settings.xml 檔案?
謝謝!
uj5u.com熱心網友回復:
COPY從主機復制到映像。如果要從影像復制到影像,請使用“正常”cp命令。
沒錯,每個 RUN 陳述句都在單獨的 shell 中運行。但是由于您生成的檔案存盤在檔案系統中,因此如果您在不同的 RUN 陳述句中執行此操作,它將起作用。
但是讓我們在一個 RUN 陳述句中只在影像中獲得 1 個新層:
FROM ubuntu:20.04
WORKDIR /app
COPY . .
RUN ./script.sh && \
cp settings.xml /root/.m2/
mv如果您不需要保留副本,也可以使用移動檔案/app。
uj5u.com熱心網友回復:
通過執行RUN script.sh該檔案將在容器內生成。因此無法使用COPYDockerfile 命令將其復制到映像中。相反,您可以mv將容器內的檔案放到所需的目的地:
FROM ubuntu:20.04
WORKDIR /app
COPY . .
RUN ./script.sh \
&& mv /path/to/settings.xml /root/.m2/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/464778.html
