在Docker中打包一个可以在运行时configuration的应用程序

我已经打包了一个我一直在做的泊坞窗图像的Web应用程序。

我想能够启动一些configuration的图像,像这是使用的couchdb服务器的url等

什么是提供configuration的最佳方式? 我的应用程序依赖于envvariables我可以在运行时设置这些吗?

除了在docker run期间设置环境variables(使用-e / --env--env-file ),您还可以find其他选项:

  • --link将你的容器链接到(例如)你的couchdb服务器。 如果您的服务器也是一个容器(或者如果您使用大使容器到另一台服务器),这将工作。 链接容器将使您的脚本可以使用的一些环境variables(包括服务器IP和端口)可用。 这将工作,如果你只需要设置参考服务。

  • 使用卷 。 Dockerfile中定义的卷可以映射到主机文件夹,因此您可以使用它们访问configuration文件。 这对于非常复杂的configuration非常有用。

  • 扩展图像。 您可以根据您的原始和ADD自定义configuration文件或ENV条目创build一个新的图像。 这是最不灵活的select,但在复杂的configuration中很有用,可以简化启动过程,特别是当configuration大部分是静态的(对于服务/主机名可能是个坏主意,但可以用于dev / production的不同configuration的框架)。 可以结合上面的任何一个。

看起来docker支持设置envvariables – 应该阅读手册!

docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash

http://docs.docker.com/reference/commandline/cli/#run