0

我正在尝试使用一个简单的用例来模拟 docker 容器链接,如下所示

1) 一个带有简单 pub-sub java 应用程序的 docker 容器,在同一个容器内有一个发布者和订阅者。我已经使用 dockerfiles 来构建这个 2)一个运行 rabbitmq 的 docker 容器,这是从 docker hub 中提取的。

现在我链接这两个容器,我可以在我的容器 #1 中看到 rabbitmq 环境变量。

现在我的问题是在我的 pub-sub 容器 #1 中使用这些容器变量的最佳方法是什么。我总是可以 java System.getenv 并硬编码环境变量。有没有更好的方法呢?

4

1 回答 1

0

在这里硬编码环境变量似乎没问题。环境变量遵循标准格式,例如RABBITMQ_PORT_5672_TCP_ADDRand RABBITMQ_PORT_5672_TCP_PORT。这些名称中唯一会改变的是标签RABBITMQ,它是根据选项设置的docker run。运行您的容器的任何人都可以使用--link rabbitmq--link someothercontainer:rabbitmq设置别名来控制该位。这只是你的容器与外界“契约”的一部分:容器必须以添加具有正确别名的变量的方式运行。

顺便说一句,如果您不想这样做,这不会强迫您使用 Docker 链接,因为如果 Rabbit MQ 在不同的机器上(例如--env RABBITMQ_PORT_5672_TCP_ADDR=1.2.3.4),您总是可以只传递环境变量。

于 2015-02-20T13:28:44.837 回答