21.3 C
Tuesday, September 28, 2021

How to pass environment variables to Docker containers

Jack Wallen exhibits you ways to pass environment variables to Docker containers for a extra environment friendly improvement course of.


Illustration: Lisa Hornung/TechRepublic

Did you recognize you’ll be able to pass environment variables out of your host to Docker containers? By utilizing this function, you can also make your improvement of these containers a bit extra environment friendly. But earlier than we get into the how of this, we want to deal with the what—as in, what are environment variables? 

SEE: The finest programming languages to learn–and the worst (TechRepublic Premium)

Environment variables are dynamically named values that may be saved after which handed to providers, functions or scripts. This is a simple means of storing a price in a centralized location (often in reminiscence) after which utilizing it globally. To discover out extra about what environment variables are, try “Linux 101: What are environment variables?”

These kinds of variables are an extremely useful trick to have up your sleeve. And in the event you’re a container developer, they will help make your job a bit simpler.

Let me present you ways.

What you may want

The solely factor you may want to pass environment variables to Docker containers is a working occasion of Docker and a person that’s a part of the docker group. That’s it. Let’s pass some variables.

How to set an environment variable

To pass an environment variable to a container, we first have to set it. I’m going to show this in Linux. If you utilize a special working system for container improvement, you may want to learn how to do the identical in your platform of selection.

Let’s say we wish to set the variable for a database person and we plan on utilizing that variable for various containers. We may set a variable known as DB_USER, which might be viable for any container utilizing any sort of database. Let’s say the worth for DB_USER might be TechRepublic. To set that variable, we would situation the command:

export DB_USER=TechRepublic

To confirm that variable has been set, situation the command:

echo $DB_USER

You ought to see TechRepublic printed within the terminal. That’s it, you have set your variable. Let’s take this one step additional (for the sake of instance) and in addition set a password as an environment variable. You would not do that in manufacturing, nevertheless it’s a great way to illustrate how that is finished. Set an environment variable for the password with:

export DB_PWORD=T3chR3public

How to pass the variable to a container

Now that you just perceive how environment variables work, you’ll be able to see how they will simply be handed to your containers. First I’ll show how to do it from the docker command line, after which utilizing an .env file.

Unlike utilizing environment variables in Linux, you’ll be able to’t set them on the host after which pass these set variables to the container in the identical means you’ll inside the host system. In different phrases, you’ll be able to’t use the variables we simply set with the Docker command like:

docker run --name postgresql -e $DB_PWORD -e $DB_USER -d postgres

If you try to deploy the container as such, it can run however instantly exit. Why? Because not like the Linux system, the place you’ll be able to just about outline environment variables nonetheless you want, container photos count on sure variables. For instance, the PostgreSQL database cannot use DB_PWORD or DB_USER, because it expects POSTGRES_PASSWORD and POSTGRES_USER. To that finish, you would set these environment variables in your Linux hosts with the instructions:

export POSTGRES_PASSWORD=t3chr3public
export POSTGRES_USER=TechRepublic

OK, now we are able to run that very same command with:

docker run --name postgresql -e POSTGRES_PASSWORD -e POSTGRES_USER -d postgres

The command will succeed and the container will stay working. You can check it by accessing the PostgreSQL command inside the container by issuing:

docker exec -it postgresql psql -U $POSTGRES_USER

You ought to end up on the PostgreSQL console inside your container.

How to pass variables with an .env file

One of the issues with passing environment variables as described above is that they dwell on in reminiscence (till you unset them with the unset command). To keep away from this, we use an environment variable file.

Let’s persist with the identical variables we used above. Create a brand new .env file with the command:

nano .env

In that file paste the next:


Save and shut the file.

Now, how can we pass these variables? Simple, we would situation the command:

docker run --name postgresql --env-file .env -d postgres

Make positive to use the total path to your .env file (in the event you’re not working the docker command from the identical listing housing the file). Your container will deploy and be prepared to use. You can check it by accessing the PostgreSQL console. The solely distinction is, you have got to manually sort out the person (as we did not set the POSTGRES_USER variable within the host system). That command can be:

docker exec -it postgresql psql -U TechRepublic

And that is the way you pass environment variables to a Docker container, both from the command line or utilizing an .env file. Hopefully, you need to use this technique in your developer workflow to make issues a bit extra environment friendly.

Also see

#Note-Author Name –

Related Articles


Please enter your comment!
Please enter your name here

Stay Connected

- Advertisement -spot_img

Latest Articles