在Docker构建期间传递配置文件的最佳方法

时间:2016-04-13 11:33:57

标签: docker dockerfile

我的应用需要运行许可证文件。我不想把它包含在我要分发的Docker镜像中。我希望用户能够通过在Docker运行期间将其作为卷安装来提供其许可证文件。我所追求的是在构建阶段暂时向Docker提供许可文件的方法。在此阶段我无法装载卷。是否有执行此类事情的标准模式? 简而言之,我需要在构建期间提供依赖的瞬态文件,以便构建完成,但该文件不包含在最终图像中。

感激地收到任何见解, 菲尔

2 个答案:

答案 0 :(得分:2)

您想要的是一张图片,在构建时不包含许可证文件。每次容器启动时都需要添加它。

我可以想到几种方法,最明显的是在启动时查找包含许可文件的固定名称的已安装卷,如果没有找到,则退出并显示消息。

这个Dockerfile说明了这个想法

FROM ubuntu:14.04

RUN echo "#!/bin/bash" >> /bin/startup.sh
RUN echo "if [ ! -e /license/license.txt ] " >> /bin/startup.sh
RUN echo "then " >> /bin/startup.sh
RUN echo "   echo 'missing license'" >> /bin/startup.sh
RUN echo "exit 1 " >> /bin/startup.sh
RUN echo "fi " >> /bin/startup.sh
RUN echo "top " >> /bin/startup.sh

RUN chmod +x /bin/startup.sh

ENTRYPOINT ["/bin/startup.sh"]

在没有许可证导演的情况下运行此操作将导致它无法启动。 使用许可证运行将永远运行。

> docker run -it test
missing license
> docker run -v `pwd`/license:/license -it test
[works]

答案 1 :(得分:0)

您可以在environment variable file

中指定它