0
votes

DockerFile - Comment utiliser env. Env.

J'ai un dockerfile contenant une commande sed code>. Je veux modifier de manière dynamique les valeurs remplacées dans sed code> en utilisant env code> s. Cependant, je ne suis pas vraiment sûr de savoir comment faire cela, ou si c'est même possible.

J'ai essayé directement à l'aide de la touche env code> dans les guillemets comme: p>

FROM ubuntu
ENV OLD_URL=example.com
ENV NEW_URL=www.test.com

COPY . .
RUN sed -i "s|urlVal: example.com|urlVal: www.test.com|" ./example.txt


1 commentaires

Ou vous pouvez essayer exécuter SED -I "S | urlval: $ (echo $ old_url) | urlval: $ (écho $ NEW_URL) |" ./example.txt


3 Réponses :


0
votes

Retirez simplement les supports bouclés et utilisez directement: exécuter SED -I "S | urlval: $ old_url | urlval: $ new_url |" ./example.txtleight/code >p> Vous pouvez imaginer que l'instruction est exécutée sur la ligne CMD. xxx

sortie: thevar_value < / p>

et en utilisant cette logique, retirez les supports bouclés.


0 commentaires

1
votes

Il se développe pour moi, donc je soupçonne que le problème est dans votre contenu de fichier lui-même, ou comment exécuter le conteneur:

$ cat df.env5
FROM ubuntu
ENV OLD_URL=example.com
ENV NEW_URL=www.test.com

RUN echo "urlVal: example.com" >/example.txt
RUN sed -i "s|urlVal: ${OLD_URL}|urlVal: ${NEW_URL}|" /example.txt
CMD cat /example.txt

$ docker build -t test-env5 -f df.env5 .
Sending build context to Docker daemon  30.72kB
Step 1/6 : FROM ubuntu
 ---> 775349758637
Step 2/6 : ENV OLD_URL=example.com
 ---> Using cache
 ---> edcd532bebba
Step 3/6 : ENV NEW_URL=www.test.com
 ---> Using cache
 ---> 7d71251cf653
Step 4/6 : RUN echo "urlVal: example.com" >/example.txt
 ---> Using cache
 ---> 0ff55a14765f
Step 5/6 : RUN sed -i "s|urlVal: ${OLD_URL}|urlVal: ${NEW_URL}|" /example.txt
 ---> Running in dabae6fb8f63
Removing intermediate container dabae6fb8f63
 ---> c7515a76e73e
Step 6/6 : CMD cat /example.txt
 ---> Running in 69739fd8de24
Removing intermediate container 69739fd8de24
 ---> ecbf606a343d
Successfully built ecbf606a343d
Successfully tagged test-env5:latest

$ docker run -it --rm test-env5
urlVal: www.test.com


1 commentaires

Ouais, je regardais la documentation pour L'image PHP , et il semble qu'ils utilisent la syntaxe J'avais ci-dessus pour modifier les fichiers de configuration Apache. Je dépannage de mon dockerfile maintenant.



0
votes

Après avoir un problème de dépannage et comme @BMitch suggéré, j'ai découvert qu'il existe une question avec le DockerFile. Pour une raison quelconque, je suis capable de joindre une coquille au conteneur et d'exécuter la même commande sans aucun problème, mais cela ne fait rien lorsque vous construisez l'image (même lorsque vous codez les valeurs) .

Malheureusement, je n'ai pas pu trouver la cause du problème dans mon DockerFile, alors ma solution de contournement actuelle exécute la commande sed dans mon entréePoint d'entrée shell à l'aide du Env S J'ai exporté dans le dockerfile.


0 commentaires