Comment définir des variables d'environnement dans Dockerfile et démarrer l'image parent

J'ai un dockerfile qui a un fichier entrypoint.sh qui exporte une variable Postgres. Ensuite, je veux démarrer le conteneur docker parent qui est référencé dans l'image "FROM pactfoundation/pact-broker". En regardant github pour son courtier Dockerfile github pact, il a CMD ["config.ru"] à la fin. J'ai donc fait la même chose dans mon Dockerfile :

FROM pactfoundation/pact-broker

COPY entrypoint.sh.
CMD ["config.ru"]

Lorsque j'exécute ma commande docker run:

docker run --rm -e POSTGRES_PORT=5433 -e POSTGRES_DBNAME=pactsd -e POSTGRES_URL=localhost -e POSTGRES_PASSWORD=1234 -e POSTGRES_USERNAME=postgres --name pact sonamsamdupkhangsar/pact:test -d

Je vois mon instruction echo entrypoint.sh et le conteneur est mort.

setting pact broker database variables

Comment démarrer le conteneur parent après avoir défini mes variables d'environnement dans mon fichier entrypoint.sh ?

J'ai également essayé avec les éléments suivants:

FROM pactfoundation/pact-broker

ENV PACT_BROKER_DATABASE_NAME=${POSTGRES_DBNAME}
ENV PACT_BROKER_DATABASE_USERNAME=${POSTGRES_USERNAME}
ENV PACT_BROKER_DATABASE_PASSWORD=${POSTGRES_PASSWORD}
ENV PACT_BROKER_DATABASE_HOST=${POSTGRES_URL}
ENV PACT_BROKER_DATABASE_NAME=${POSTGRES_DBNAME}
ENV PACT_BROKER_DATABASE_PORT=$POSTGRES_PORT
RUN echo "PACT_BROKER_DATABASE_PORT: $PACT_BROKER_DATABASE_PORT"

Pourtant, lorsque j'exécute mon image docker construite, je ne vois toujours pas les variables définies. J'ai essayé les deux approches pour "${}" et "$" pour le paramètre env var.


Solution du problème

Vous devez définir vos variables d'environnement à l'aide de l'ENV dans votre fichier docker.

Comme chaque étape est exécutée dans différents conteneurs, ce qui crée l'image si vous la définissez via des scripts shell, cela ne fonctionnera pas. Pensez à utiliser la commande ENV pour le définir

Réf: DOCKERFILE ENV

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"