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>