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
Enregistrer un commentaire