# How Do I Pass Environment Variables to Docker Containers?

It is always a good practice to separate the app from its configuration. It is not a good idea to have a database login credential defined as variables in the code of the application. This is why we use environment variables. But this means we need a way to pass the value somehow to the application running in the Docker container.

There are two main ways to inject environment variables into Docker containers.

## Using the command line argument `-env` or `-e`

When you launch docker using the `docker run` command, you can pass the environment variables as a key-value pair using the `-env` (or `-e`) option.

```bash
docker run --name ubuntu -env VARIABLE='value' -d ubuntu
```

If you have a variable already exported like this:

```bash
export VARIABLE='value'
```

You can pass the variable into the docker like this:

```bash
docker run --name ubuntu -env VARIABLE -d ubuntu
```

## Using the `.env` file

Passing the variable using the command option argument is easy for a small number of variables. If you need to pass many variables at the same time, it is always better to use `.env` file.

The `.env` file (also called envfile) is a simple text file in which the variables are defined as key-value pairs.

You can append variables to envfile using the following syntax:

```bash
echo VARIABLE1='value1' > envfile.txt
echo VARIABLE2='value2' >> envfile.txt
echo VARIABLE3='value3' >> envfile.txt
```

Please, notice the `>>` operator when appending to an existing file. Using the `>` operator would overwrite the content.

If you are new to Docker, feel free to start with our [Getting started logging guide](https://betterstack.com/community/guides/logging/how-to-start-logging-with-docker/).

[ad-logs]