【发布时间】:2017-08-03 17:47:19
【问题描述】:
我是 docker-compose 的新手。
我试图了解如何在Dockerfile 的构建阶段通过 docker-compose 传递环境变量以填充配置文件中缺少的变量值,因此在运行阶段,我将运行服务-rabbitmq它的配置填充了环境变量值。
在 docker-compose yml 文件中,我有一个 env_file: 和 environment:,我该如何将它们传递给配置文件。
任何帮助,一个简单的例子将不胜感激 当然。
示例 rabbitmq 配置文件(环境变量需要用 $SSL_PORT 的值填充):
[{rabbit,
[
{loopback_users, []},
{ssl_listeners, [$SSL_PORT]},
{ssl_options, [{cacertfile,"/etc/rabbitmq/ca/cacert.pem"},
{certfile,"/etc/rabbitmq/server/cert.pem"},
{keyfile,"/etc/rabbitmq/server/key.pem"},
{verify,verify_none},
{fail_if_no_peer_cert,false}]}
]}
].
【问题讨论】:
-
@TarunLalwani:如何将源自
env_file:或environment:部分的环境变量传递给 docker build 阶段的配置文件? -
如果您在构建过程中传递它,那么您需要使用构建参数。 docs.docker.com/engine/reference/commandline/build/…
-
@JavaSa: ...但请注意,如果您在构建过程中尝试生成该配置,那么放弃很多灵活性就会有问题。这(生成配置文件)通常在运行时更有用,因为您运行容器的位置通常与构建映像的位置完全不同。此外,让容器中的 ssl 端口可配置似乎没有必要:容器网络是隔离的,您可以使用端口映射将服务暴露在任意主机端口。
-
@larsks:除了端口我需要传入我想为rabbitmq创建的用户和密码,在这个特定的例子中,它将使用默认用户。所以我仍然需要模板机制来填充conf。
标签: bash docker rabbitmq docker-compose