我有50个应用程序的server.xml文件,这些文件对于所有应用程序都是不同的。我需要为所有应用程序编写一个docker文件来获取该server.xml。
server.xml在哪里:Gitserver私有repo仅使用基于ssh的克隆 我无法仅为单个server.xml文件克隆完整的repo
获取该文件并成为dockerfile的一部分的最佳方法是什么。 有没有办法这样做而不是保留在dockerfile中?
答案 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(或只是将其内容复制到本地文件),您就可以: