2015-08-14 3 views
2

Je me réfère à Gradle-Docker plugin de Benjamin Muschko. J'utilise Mac OS X mais certains de mes collègues utilisent Linux.Définition de l'adresse IP du serveur de docker en tant que variable d'environnement à l'aide du plug-in gradle-docker

Je voudrais trouver un moyen d'utiliser le plugin ci-dessus afin de récupérer l'adresse IP du serveur docker et le définir comme une variable d'environnement à utiliser par mon application Spring Boot.

je pouvais le faire manuellement en émettant un docker-machine ip <machineName> mais je dois le faire par programme par gradle pour que je peux exécuter mon application de gradle qui:

  • Récupérer le serveur docker IP
  • Set comme une variable d'env (par exemple $DOCKER_IP)
  • Mon printemps application Boot utilisera alors cette variable afin de se connecter à l'hôte docker Mysql et ElasticSearch.

Est-ce possible de le faire de façon générique afin qu'il fonctionne sous Mac Os X et Linux?

Répondre

1

Fondamentalement, oui. Cela peut être fait par programme. Vous devez exécuter la commande dans gradle pour obtenir l'adresse IP du docker. Cependant, les variables d'environnement ne peuvent pas être définies dans les langages JVM, vous pouvez utiliser par exemple. propriétés du système. L'extrait suivant peut être utile:

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

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

Merci beaucoup Opal. Est-ce que ce sera portable sur Linux? – balteo

+0

Il devrait autant que la commande soit exécutée exactement de la même manière. – Opal

+0

Ummm ... Je crois que linux n'utilise pas docker-machine ip ou similaire. Comment alors quelqu'un utilisant Linux récupérera l'IP pour l'hôte du docker? – balteo