web-dev-qa-db-fra.com

Dockerfile Overriding variable ENV

J'ai un Dockerfile et je voudrais rendre l'API configurable avec une valeur par défaut.

DE socialengine/nginx-spa

ENV API_URL localhost: 6007

Donc, quand je lance cette image, je serais en mesure de remplacer le localhost: 6007 avec quelque chose comme ci-dessous:

docker run -e API_URL = production.com: 6007 ui

Cela ne fonctionne pas et je ne trouve pas d'explication claire sur la façon de procéder.

Aucun conseil?

20
Proximo

Ce que vous avez décrit devrait très bien fonctionner. Donné:

$ cat Dockerfile
FROM socialengine/nginx-spa
ENV API_URL localhost:6007
$ docker build -t ui .
[...]

Considère ceci:

$ docker run -it --rm ui env | grep API_URL
API_URL=localhost:6007

Par rapport à:

$ docker run -it --rm -e API_URL='production:6007' ui env | grep API_URL
API_URL=production:6007

Passer un -e VARNAME=varvalue sur le docker run la ligne de commande remplacera un ensemble par défaut dans votre Dockerfile.

Si vous voyez un comportement différent, veuillez mettre à jour votre question pour afficher exactement la commande que vous exécutez et la sortie associée.

Mise à jour

Voici l'exemple complet, enregistré pour votre plaisir visuel:

https://asciinema.org/a/a5a2n3exlyh4jkii4k0ivvqmd

32
larsks