在 java 中使用环境变量 post docker 容器链接

Using environment variables post docker container linking in java

我正在尝试使用如下所示的简单用例来模拟 docker 容器 linking

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

现在我 link 这两个容器,我能够在我的容器 #1 中看到 rabbitmq 环境变量。

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

在这里对环境变量进行硬编码似乎没问题。环境变量遵循标准格式,如 RABBITMQ_PORT_5672_TCP_ADDRRABBITMQ_PORT_5672_TCP_PORT。这些名称中唯一会改变的是标签 RABBITMQ,它是根据 docker run 的选项设置的。谁 运行 你的容器控制那个位,用 --link rabbitmq--link someothercontainer:rabbitmq 设置别名。这只是容器与外界的 "contract" 的一部分:容器必须 运行 以添加具有正确别名的变量的方式。

顺便说一句,如果您不想,这不会强制您使用 Docker 链接,因为如果 Rabbit MQ 在不同的机器上(例如 --env RABBITMQ_PORT_5672_TCP_ADDR=1.2.3.4).