Dockerfile COPY 由 运行 sh 脚本生成的文件
Dockerfile COPY file generated by RUN sh script
我想使用 Docker.
自动构建和执行 java spring Web 服务
我 运行 来自 dockerfile 的脚本生成 settings.xml 文件。我想在图像中复制该文件,但是因为 运行 创建一个新容器(我想?)构建找不到生成的文件。
这是我的 Docker 文件的开头:
FROM ubuntu:20.04
WORKDIR /app
COPY . .
RUN ./script.sh
COPY settings.xml /root/.m2/
并且有输出...
如何复制由我的 sh 脚本生成的 settings.xml 文件?
谢谢!
COPY
从主机复制到镜像。如果你想从镜像复制到镜像,你使用'normal'cp
命令。
您说得对,每个 运行 语句都在单独的 shell 中运行。但是由于您生成的文件存储在文件系统中,因此如果您在不同的 运行 语句中执行它,它将起作用。
但让我们在一个 运行 语句中完成,只在图像中获得 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/
我想使用 Docker.
自动构建和执行 java spring Web 服务我 运行 来自 dockerfile 的脚本生成 settings.xml 文件。我想在图像中复制该文件,但是因为 运行 创建一个新容器(我想?)构建找不到生成的文件。
这是我的 Docker 文件的开头:
FROM ubuntu:20.04
WORKDIR /app
COPY . .
RUN ./script.sh
COPY settings.xml /root/.m2/
并且有输出...
如何复制由我的 sh 脚本生成的 settings.xml 文件?
谢谢!
COPY
从主机复制到镜像。如果你想从镜像复制到镜像,你使用'normal'cp
命令。
您说得对,每个 运行 语句都在单独的 shell 中运行。但是由于您生成的文件存储在文件系统中,因此如果您在不同的 运行 语句中执行它,它将起作用。
但让我们在一个 运行 语句中完成,只在图像中获得 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/