在docker中打包可在运行时配置的应用程序

时间:2014-07-02 09:32:50

标签: docker

我打包了一个我一直在处理的网络应用程序作为docker图像。

我希望能够使用某些配置启动映像,例如这是要使用的couchdb服务器的URL等。

提供配置的最佳方式是什么?我的应用程序依赖于env变量,我可以在运行时设置它们吗?

2 个答案:

答案 0 :(得分:4)

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

  • 使用--link将您的容器链接到(例如)您的couchdb服务器。如果您的服务器也是一个容器(或者如果您使用ambassador container到另一个服务器),这将有效。链接容器将使一些环境变量可用,包括脚本可以使用的服务器IP和端口。如果您只需要设置对服务的引用,这将有效。

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

  • 扩展图像。您可以根据原始和ADD自定义配置文件或ENV条目创建新映像。这是灵活性最低的选项,但在复杂配置中非常有用,可以简化启动,特别是当配置主要是静态时(可能是服务/主机名的一个坏主意,但可以用于可以为开发/生产配置不同的框架)。可与上述任何一项结合使用。

答案 1 :(得分:2)

似乎docker支持设置env变量 - 应该阅读手册!

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

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