Docker文件来克隆git中的文件



我有一个服务器.xml 50个应用程序的文件,所有应用程序都不同。 我需要为所有应用程序编写一个 docker 文件来获取该服务器.xml。

服务器在哪里.xml:Gitserver 私有存储库仅使用基于 ssh 的克隆 我无法仅为单个服务器.xml文件克隆完整的存储库

获取该文件并成为 dockerfile 的一部分的最佳方法是什么。 有没有办法做到这一点而不是保存在 dockerfile 中?

可以使用参数拉取 xml 文件,然后将其构建到映像中。

FROM alpine
ARG SERVER_CONF
RUN curl ${SERVER_CONF}
EXEC server.sh

然后,您可以运行构建并传入 xml 文件的位置

docker build --build-arg SERVER_CONF=http://localhost/server.xml

或者,您可以将其设置为环境变量,以便可以在运行时获取 xml 文件。

FROM alpine
ARG SERVER_CONF
ENV SERVER_CONF=${SERVER_CONF}
RUN server.sh --config=$SERVER_CONF

这将允许您在构建映像时动态设置配置。

如果您想在运行时设置配置,则可以在启动 docker 容器时将其作为环境变量传递

FROM alpine
RUN server.sh --config=$SERVER_CONF

然后通过传入环境变量来启动容器

docker run -e "SERVER_CONF=http://localhost/server.xml" server

您不必传递 url,您可以将 xml 文件的全部内容作为字符串传递。在应用程序启动之前,可以使用入口点将环境的内容写入文件。

有什么办法可以代替保存在 dockerfile 中吗?

只要您已经获取了该服务器.xml(或只是将其内容复制到本地文件(,您就可以:

  • 要么将其复制到您的 Dockerfile 中
  • 或者将其放在公共场所,可远程访问,您的容器可以在运行时从中获取(而不必尝试克隆私有存储库,您的容器应该无法这样做(

最新更新