是否有可能通过链接两个docker集装箱来自定义环境variables?

我为我的数据库服务器创build了一个docker镜像,一个用于web应用程序。 使用文档,我可以使用环境variables在两个容器之间进行链接,如下所示:

value="jdbc:postgresql://${DB_PORT_5432_TCP_ADDR}:${DB_PORT_5432_TCP_PORT}/db_name"

它现在工作正常,但它会更好,环境variables更一般,不包含静态端口号。 就像是:

value="jdbc:postgresql://${DB_URL}:${DB_PORT}/db_name"

反正有环境variables之间的联系吗? 例如通过使用dockerfile中的ENV命令ENV DB_URL=$DB_PORT_5432_TCP_ADDR或使用参数–env运行图像docker run ... -e DB_URL=$DB_PORT_5432_TCP_ADDR docker_image

如果没有在docker启动shell脚本或其他编排机制中build立这种function,目前不可能像创build环境variables一样在这里描述。 你提到了一些解决方法。 但是,至less在你的-e DB_URL=... docker run命令中使用-e DB_URL=...的问题是,你的$DB_PORT_5432_TCP_ADDR环境variables在运行时是$DB_PORT_5432_TCP_ADDR ,所以当你运行它的时候你将无法设置这个值。 通常,这是您的编排层用于服务发现和在您的容器之间传递这种types的数据。 在这里提到的至less有一个解决方法,涉及到构build一个特殊的shell脚本,您将其放入您的CMDENTRYPOINT指令,将环境variables传递给容器。