使用 gradle-docker-plugin 将 docker 服务器 IP 设置为环境变量
Setting the docker server IP as an environment variable using the gradle-docker-plugin
我参考了 Benjamin Muschko 的 Gradle-Docker plugin。
我用 Mac OS X 但是我的一些同事用 Linux.
我想找到一种方法来使用上述插件来检索 docker 服务器 IP 并将其设置为环境变量以供我的 Spring 启动应用程序使用。
我可以通过发出 docker-machine ip <machineName>
手动完成,但我需要通过 gradle 以编程方式执行此操作,这样我就可以 运行 我的应用程序来自 gradle将:
- 检索 docker 服务器 IP
- 将其设置为环境变量(例如
$DOCKER_IP
)
- 我的 Spring 启动应用程序将使用该变量连接到 Mysql 和 Elasticsearch在 docker 主机上。
是否有可能以通用方式做到这一点,以便它可以在 Mac Os X and Linux 下工作?
基本上是的。它可以通过编程方式完成。您需要执行gradle中的命令来获取docker IP。然而环境变量不能在 JVM 语言中设置,你可以使用例如系统属性。以下代码段可能会有所帮助:
task setDockerIP << {
def dockerIP = ['boot2docker', 'ip'].execute().text
System.setProperty('dockerIP', dockerIP)
}
task printProp(dependsOn: 'setDockerIP') << {
System.properties.each {
println "$it.key -> $it.value"
}
}
我参考了 Benjamin Muschko 的 Gradle-Docker plugin。
我用 Mac OS X 但是我的一些同事用 Linux.
我想找到一种方法来使用上述插件来检索 docker 服务器 IP 并将其设置为环境变量以供我的 Spring 启动应用程序使用。
我可以通过发出 docker-machine ip <machineName>
手动完成,但我需要通过 gradle 以编程方式执行此操作,这样我就可以 运行 我的应用程序来自 gradle将:
- 检索 docker 服务器 IP
- 将其设置为环境变量(例如
$DOCKER_IP
) - 我的 Spring 启动应用程序将使用该变量连接到 Mysql 和 Elasticsearch在 docker 主机上。
是否有可能以通用方式做到这一点,以便它可以在 Mac Os X and Linux 下工作?
基本上是的。它可以通过编程方式完成。您需要执行gradle中的命令来获取docker IP。然而环境变量不能在 JVM 语言中设置,你可以使用例如系统属性。以下代码段可能会有所帮助:
task setDockerIP << {
def dockerIP = ['boot2docker', 'ip'].execute().text
System.setProperty('dockerIP', dockerIP)
}
task printProp(dependsOn: 'setDockerIP') << {
System.properties.each {
println "$it.key -> $it.value"
}
}