我有一个服务器.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 中
- 或者将其放在公共场所,可远程访问,您的容器可以在运行时从中获取(而不必尝试克隆私有存储库,您的容器应该无法这样做(