2017-10-19 8 views
0

J'ai cette ligne dans un Dockerfilefichier environnement Source ne fonctionne pas dans docker

RUN /bin/bash -c ". setup.sh ; echo $LD_LIBRARY_PATH ; make"

LD_LIBRARY_PATH est situé dans setup.sh. Cependant, lorsque j'exécute docker build ., l'instruction echo imprime simplement une chaîne vide, et make donne une erreur pour une bibliothèque non trouvée.

De nombreuses réponses trouvées ici dans Stackoverflow et ailleurs, je m'attendrais à ce que le chemin soit imprimé.

Qu'est-ce qui me manque? Merci à l'avance

+0

Pouvez-vous fournir un [mcve] (http://stackoverflow.com/help/mcve)? Que se passe-t-il si vous échappez à la variable dans le Dockerfile ... 'echo \ $ LD_LIBRARY_PATH' ou le remplacez par un' env'? – BMitch

+0

Merci pour votre commentaire. Apparemment oui, le problème de l'instruction d'écho était que je n'échappais pas au symbole du dollar, et que la bibliothèque manquante dans make n'était pas reliée. – matteo

Répondre

1

Dans un Dockerfile, la ligne:

RUN /bin/bash -c ". setup.sh ; echo $LD_LIBRARY_PATH ; make" 

entraînera la variable qui est $LD_LIBRARY_PATH augmenté de docker lui-même (vous pouvez définir cette variable avec une ligne ARG ou ENV). Pour obtenir la variable à être étendue par la coque à l'intérieur de votre conteneur, échapper simplement avec une barre oblique inverse:

RUN /bin/bash -c ". setup.sh ; echo \$LD_LIBRARY_PATH ; make" 
+0

Merci BMitch. Accepté – matteo