使用 gradle-docker-plugin 将 docker 服务器 IP 设置为环境变量

Posted

技术标签:

【中文标题】使用 gradle-docker-plugin 将 docker 服务器 IP 设置为环境变量【英文标题】:Setting the docker server IP as an environment variable using the gradle-docker-plugin 【发布时间】:2015-11-07 13:09:05 【问题描述】:

我指的是 Benjamin Muschko 的 Gradle-Docker plugin。

我使用 Mac OS X,但我的一些同事使用 Linux。

我想找到一种方法来使用上述插件来检索 docker 服务器 IP 并将其设置为环境变量以供我的 Spring Boot 应用程序使用。

我可以通过发出docker-machine ip <machineName> 手动执行此操作,但我需要通过 gradle 以编程方式执行此操作,以便我可以从 gradle 运行我的应用程序:

获取 docker 服务器 IP 将其设置为环境变量(例如$DOCKER_IP) 然后,我的 Spring Boot 应用将使用该变量连接到 docker 主机上的 MysqlElasticsearch

这是否可以以通用方式进行,以便在 Mac Os X Linux 下工作?

【问题讨论】:

【参考方案1】:

基本上,是的。它可以以编程方式完成。您需要在 gradle 中执行命令以获取 docker IP。但是环境变量不能在 JVM 语言中设置,你可以使用例如系统属性。以下 sn-p 可能会有所帮助:

task setDockerIP << 
   def dockerIP = ['boot2docker', 'ip'].execute().text
   System.setProperty('dockerIP', dockerIP)


task printProp(dependsOn: 'setDockerIP') << 
   System.properties.each 
      println "$it.key -> $it.value"
   

【讨论】:

非常感谢欧泊。这会移植到 linux 上吗? 它应该以完全相同的方式执行命令。 Ummm...我相信linux不使用docker-machine ip &lt;machine-name&gt;之类的。那么使用 linux 的人将如何检索 docker 主机的 IP? 在 linux 环境中,docker 主机的 IP 是运行 docker 的机器的 IP。因此,在这种情况下,您只需要获取工作站的 IP。请参阅:***.com/questions/9481865/… 对吗? 那么你的意思是localhost

以上是关于使用 gradle-docker-plugin 将 docker 服务器 IP 设置为环境变量的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用dplyr将特定的数据列移动到最前面使用dplyr将特定数据列移动到另一指定数据列的后面使用dplyr将特定数据列移动到另一指定数据列的前面

您将如何将 node.js 子进程与 discord.js 一起使用?

使用 ATL 编译 dll,将方法参数作为接口,但将它们作为 coclasses

使用 Tumbleweed 安全文件传输将文件发送到 S3

使用 VBA 将表单另存为报表

使用 jQuery 1.5 将请求作为 jsonp 发送,将响应解释为文本