[Docker] Use Environment Variables for Docker Containers
Containers can be very useful to emulate various environments. You can also use much more complex containers. In this case, we had a container with a simple operating system but a lot of containers will include a bunch of executables and runtimes. You could, for example, start a container that has the latest version of NodeJs installed by running the image called "node". Just like in our previous examples, you can specify a command to be executed once our container is started. In this case, you will ask NodeJs to evaluate the following statement. Console.log(process.version).
docker run node:latest node -e "console.log(process.version)"
This will start the container, execute that command and you should see a version number as the output. Note that if you run
node -v
in your local environment, this might be a different version number. This is because the runtime for NodeJs that ran that first command is not the same as the one you have installed on your machine. In fact, you don’t need to have NodeJs installed at all to run Node, as long as you have docker.
Another neat thing that you can do with containers is to pass environment variables to your container. This way, you could pass it something like the base URL for your API. Your development team would then be able to use a different API than your production server. To pass an environment variable to a container, you can use the -e argument. In this next example, you can use the -e to pass an environment variable than will then be outputted by NodeJs.
docker run -e NAME=World node:latest node -e "console.log(process.env.NAME)" ## World
First -e NAME=World
: set an env variable called NAME, value is World
Second -e "console
: mean exec a command.