J'ai un dockerfile contenant une commande J'ai essayé directement à l'aide de la touche 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. 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
3 Réponses :
Retirez simplement les supports bouclés et utilisez directement: sortie: et en utilisant cette logique, retirez les supports bouclés. P> p> 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. p> thevar_value code> < / p>
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
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.
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) em> . p>
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 code> dans mon entréePoint d'entrée code> shell à l'aide du Env code> S J'ai exporté dans le dockerfile. P>
Ou vous pouvez essayer
exécuter SED -I "S | urlval: $ (echo $ old_url) | urlval: $ (écho $ NEW_URL) |" ./example.txt code>