To load a .env file in a Docker container, you have a couple of options depending on the context in which you are running your container. Here are the most common methods: If you're starting your container with the In this command, replace If you are using Docker Compose, you can specify the In this You can manually set environment variables in your Dockerfile using the Another method is to copy the Remember to ensure that your 1. Using
docker run
Commanddocker run
command, you can use the --env-file
flag to specify a path to the .env
file. This flag loads environment variables from the file into the container. For example:docker run --env-file /path/to/your/.env your-image-name
/path/to/your/.env
with the path to your .env
file and your-image-name
with the name of your Docker image.2. Using Docker Compose
.env
file in the docker-compose.yml
file. Docker Compose automatically looks for a file named .env
in the same directory as the docker-compose.yml
file. You can also explicitly specify the path to the .env
file using the env_file
configuration in your docker-compose.yml
. Here's an example:version: '3'
services:
webapp:
image: your-image-name
env_file:
- /path/to/your/.env
docker-compose.yml
, the env_file
directive loads the specified .env
file into the webapp
service. Again, replace /path/to/your/.env
with the path to your .env
file and your-image-name
with the name of your Docker image.3. Manually Setting Environment Variables in Dockerfile
ENV
instruction. However, this method doesn't use the .env
file directly; instead, you hardcode the variables in the Dockerfile. This method is less flexible and not recommended if you want to keep your configuration dynamic and outside of the Docker image.4. Copying
.env
File into the Container.env
file into the container and then use a script to export the variables at runtime. This approach is less common and generally not recommended because it bakes the environment configuration into the image, reducing flexibility.Best Practices
.env
file is often the most convenient option.docker run --env-file
option is typically preferred..env
file does not get committed to public source control if it contains sensitive information.