2017-07-23 1 views
0

J'essaye de configurer le projet de golang avec Jetbrains Gogland et docker composent. Je veux utiliser GOPATH et aller du conteneur docker. Je veux dire utiliser l'installation go du conteneur pour la saisie semi-automatique, etc. sans installer golang sur la machine locale. la structure du projet est:Comment puis-je configurer go sdk et GOPATH à partir du conteneur docker?

project root 
    docker-compose.yml 
    back| 
     Dockerfile 
     main.go 
     some other packages 
    front| 
     all the front files... 

Après cela, je veux déployer mon dossier back au /go/src/app dans le récipient de docker. Le problème est que quand je développe le projet je ne peux pas utiliser la saisie semi-automatique car ce projet n'est pas dans ma GOPATH locale et il y a différentes versions de golang dans le conteneur docker et sur ma machine locale J'ai déjà lu la question this mais je peux encore ne résoudrai pas mon problème.

+0

Voulez-vous accéder 'SD' SDK dans votre machine locale à partir du conteneur' Docker'? – Arpit

+0

@Arpit Oui, allez sdk et allez –

+0

@Arpit merci pour votre commentaire. Mais comment puis-je prendre un lien SDK pour l'ajouter dans les paramètres goglang. '-v' c'est une partie des volumes dans le fichier docker-composer? –

Répondre

1

Pour l'instant ce n'est pas possible. Je ne vois pas non plus comment cela pourrait être possible dans le futur. Le montage d'un volume dans le docker signifie que vous "cachez" le contenu de ce dossier du conteneur et utilisez plutôt les fichiers sur l'hôte. Ainsi, à chaque fois que vous monterez le répertoire à partir de votre ordinateur, vos fichiers conteneur de cette instance ne seront pas disponibles sur la machine. Cela signifie que vous ne pouvez pas installer Go dans le conteneur, puis monter un dossier et utiliser cet emplacement pour les sources Go. Si vous pensez: je vais juste monter les choses à un autre endroit, faire des fichiers magiques/copier des liens sympas, c'est juste une mauvaise idée qui ne mène nulle part.

Gogland prend en charge le débogage à distance à partir de l'EAP 10, lancé il y a quelques semaines. Cela vous permet de déboguer les applications s'exécutant dans des conteneurs ou sur des hôtes distants. En tant que tel, vous pouvez installer Go et le code source sur votre machine mais les faire fonctionner dans des conteneurs.

+0

Cela est vrai, mais docker permet également de copier des données à partir d'un [conteneur dans un volume] (https://docs.docker.com/engine/admin/volumes/volumes/#populate-a-volume-using-a -récipient). Il est alors possible de partager ces données entre des conteneurs/services utilisant des volumes nommés dans docker-compose v3 ou volumes_from dans docker-compose v2. Si docker-composer a développé le mécanisme pour vous permettre de lier un répertoire hôte à ce volume un peu comme la façon dont les services peuvent monter ce volume de données, il satisferait ce que l'OP veut. – waynethec

+0

Techniquement, nous pouvons déjà le faire en créant un volume à partir du conteneur golang spécifiant/go afin que le volume soit ensuite rempli avec les binaires go. Après cela nous trouverions alors le point de montage sur l'hôte et le lien symbolique à partir de là, mais comme vous l'avez laissé entendre, c'est compliqué à gérer. – waynethec