Docker Dockerfile

Variable Environnement

On ne peut pas utiliser directement les variables du fichier .env dans un Dockerfile.

Le fichier .env est interprété par Docker Compose, pas par le moteur Docker lui-même. Cela signifie que :

  • Les variables définies dans .env peuvent être utilisées dans le docker-compose.yml.
  • Mais elles ne sont pas automatiquement injectées dans le contexte de build du Dockerfile.



Comment utiliser des variables .env dans un Dockerfile ?

Tu as deux options :



Option 1 : Passer les variables via --build-arg

  1. Dans ton .env :
APP_ENV=production
  1. Dans ton docker-compose.yml :
services:
  app:
    build:
      context: .
      args:
        APP_ENV: ${APP_ENV}
  1. Dans ton Dockerfile :
ARG APP_ENV
ENV APP_ENV=${APP_ENV}

Cela permet d’utiliser la variable dans le Dockerfile comme une variable d’environnement.


Option 2 : Utiliser ENV directement dans le Dockerfile (moins dynamique)

Tu peux aussi définir des variables en dur dans le Dockerfile, mais ce n’est pas lié au .env.



🧠 Résumé

Fichier Peut utiliser .env ? Utilisation
docker-compose.yml ✅ Oui ${VAR_NAME}
Dockerfile ❌ Non (directement) Utiliser ARG + args: dans Compose