我打包了一个我一直在处理的网络应用程序作为docker图像。
我希望能够使用某些配置启动映像,例如这是要使用的couchdb服务器的URL等。
提供配置的最佳方式是什么?我的应用程序依赖于env变量,我可以在运行时设置它们吗?
答案 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