Docker文件克隆git中的文件

时间:2018-05-18 22:21:00

标签: git docker dockerfile docker-image

我有50个应用程序的server.xml文件,这些文件对于所有应用程序都是不同的。我需要为所有应用程序编写一个docker文件来获取该server.xml。

server.xml在哪里:Gitserver私有repo仅使用基于ssh的克隆 我无法仅为单个server.xml文件克隆完整的repo

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

2 个答案:

答案 0 :(得分:1)

您可以use an argument拉出xml文件,然后将其构建到图像中。

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

然后你可以运行build并传入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

然后按passing in the environment variable

启动容器
docker run -e "SERVER_CONF=http://localhost/server.xml" server

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

答案 1 :(得分:0)

  

有没有办法这样做而不是保留在dockerfile中?

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

  • COPY it in your Dockerfile
  • 或将其置于可远程访问的公共场所,您的容器可以在运行时从中获取(而不必尝试克隆您的容器无法执行的私有仓库)