Docker文件以克隆git中的文件

Docker文件以克隆git中的文件,git,docker,dockerfile,docker-image,Git,Docker,Dockerfile,Docker Image,我有一个server.xml文件,用于50个不同的应用程序。我需要为所有应用程序编写一个docker文件来获取server.xml 其中是server.xml:Gitserver private repo仅使用基于ssh的克隆 我无法仅为单个server.xml文件克隆完整的repo 获取该文件并使其成为dockerfile的一部分的最佳方法是什么。 有没有什么方法可以代替保存在dockerfile中 有没有什么方法可以代替保存在dockerfile中 只要您已获取该server.xml(或只是

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

其中是server.xml:Gitserver private repo仅使用基于ssh的克隆 我无法仅为单个server.xml文件克隆完整的repo

获取该文件并使其成为dockerfile的一部分的最佳方法是什么。 有没有什么方法可以代替保存在dockerfile中

有没有什么方法可以代替保存在dockerfile中

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

  • 或者
  • 或者将其放在公共场所,可远程访问,您的容器可以在运行时从中获取(而不必尝试克隆私有repo,您的容器不应该这样做)
您可以先提取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
这将允许您在构建映像时动态设置配置

FROM alpine
ARG SERVER_CONF
RUN curl ${SERVER_CONF}
EXEC server.sh
如果希望在运行时设置配置,则可以在启动docker容器时将其作为环境变量传递

FROM alpine
RUN server.sh --config=$SERVER_CONF
然后开始你的容器


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

您确实需要更清楚地说明您要做什么。每个应用程序都有一个不同的server.xml和自己的github repo?你需要50个不同的Docker集装箱吗?为什么不希望server.xml位于Docker容器中?(“保存在dockerfile中”没有真正意义)。所有这些xml文件都将是docker映像的一部分。。所以为了保持在图像中,我应该从我使用docker文件的git repo中提取文件。对于您的qstnn,每个应用程序都有一个不同的server.xml和自己的github repo?不,我们有一个私有repo,其中包含与应用程序相关的所有文件。所以我需要获取这些文件,并且应该是ImageServer.sh的一部分。server.sh由什么组成?所有xml文件都在git存储库中,所以我不能使用curl获取xml文件。