Pasar variables de entorno al contenedor en Docker

Isaac Tony 30 enero 2023
  1. Use las etiquetas -e y -env Pase variables de entorno al contenedor en Docker
  2. Use el comando Exportar para pasar variables de entorno al contenedor en Docker
  3. Use un archivo -env para pasar variables de entorno al contenedor en Docker
Pasar variables de entorno al contenedor en Docker

Este tutorial presentará los métodos para pasar variables de entorno al contenedor en Docker.

Use las etiquetas -e y -env Pase variables de entorno al contenedor en Docker

Comenzaremos viendo cómo podemos crear variables ambientales y pasarlas a un contenedor. Comenzaremos extrayendo la imagen que usaremos del registro de Docker usando el siguiente comando.

$ docker pull ubuntu~$ docker pull ubuntu

Producción :

Using default tag: latest
latest: Pulling from library/ubuntu
08c01a0ec47e: Pull complete
Digest: sha256:669e010b58baf5beb2836b253c1fd5768333f0d1dbcb834f7c07a4dc93f474be
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Usaremos la etiqueta -e, la forma abreviada de -env, cuyo uso se puede verificar ejecutando el comando docker run -help en la terminal. Este argumento nos permite crear múltiples pares clave-valor de variables de entorno para pasar al contenedor.

Así es como podemos crear una sola variable de entorno y pasarla a un contenedor que hemos creado usando la imagen de Ubuntu.

$ docker run -it -e DEMO=sample_variable ubuntu bash

Producción :

root@3a20bc21d3c8:/# echo $DEMO
sample_variable

También podemos usar múltiples etiquetas de -e para crear variables ambientales simplemente encadenándolas junto con el comando de ejecución mientras creamos un nuevo contenedor, como se muestra a continuación.

$ docker run -it -e DEMO1=sample_variable1 -e DEMO2=sample_variable2 ubuntu bash

Una vez que hayamos pasado estas dos variables ambientales, podemos acceder a sus valores usando los comandos a continuación. Hemos nombrado a la variable uno como DEMO1, y podemos acceder a su valor a continuación.

root@9eee00d7ab01:/# echo $DEMO1

Producción :

sample_variable1

De manera similar, también podemos imprimir la variable dos, como se muestra aquí.

root@9eee00d7ab01:/# echo $DEMO2

Producción :

sample_variable2

Use el comando Exportar para pasar variables de entorno al contenedor en Docker

Alternativamente, también podemos evitar el encadenamiento de variables ambientales usando el comando de exportación. Este comando es una herramienta de utilidad integrada para el shell bash de Linux que también se puede usar con WSL.

Nos permite crear y pasar variables de entorno a procesos secundarios sin afectar las variables preexistentes. Comenzaremos creando las variables de entorno, como se muestra a continuación.

isaac@DESKTOP-HV44HT6:~$ export MYSQL_USER=isaactonyloi
isaac@DESKTOP-HV44HT6:~$ export MYSQL_PASS=fakepassword

Una vez que hemos creado las variables ambientales, podemos pasarlas a un contenedor que estamos creando, como se muestra a continuación.

$ docker run -it -e MYSQL_USER -e MYSQL_PASS ubuntu bash

Luego podemos acceder y mostrar los valores respectivos de las variables usando el comando echo como se muestra a continuación.

root@5b4dae06932d:/# echo $MYSQL_USER
isaactonyloi

Use un archivo -env para pasar variables de entorno al contenedor en Docker

Un mejor enfoque que le brinda más espacio para depurar es usar un archivo de descomposición de Docker en su lugar. Esto significa que ahora no tenemos que pasar variables de entorno directamente al iniciar nuestro contenedor docker.

Este método significa que tenemos que crear un archivo externo .env que contendrá nuestras variables ambientales. Podemos crear este archivo en nuestro directorio de inicio usando el siguiente comando de Linux.

Este comando opta por el editor vi de Linux, creando nuestra lista de variables de entorno.

$ vi env.list

Dentro del editor vi, crearemos las variables de entorno como pares clave-valor con las claves en mayúsculas y sus respectivos valores en minúsculas. Saldremos guardando la variable pulsando los dos puntos completos y tecleando el comando wq.

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

wq

Podemos usar el comando ls para confirmar que el archivo env.list se ha guardado correctamente. Esto debería devolver una lista de archivos en ese directorio con env.list entre los enumerados.

También podemos usar el comando cat para ver las entradas en esa lista, como se muestra a continuación.

$ cat env.list

Producción :

MYSQL_USER=isaactonyloi
MYSQL_PASS=fakepassword

Una vez que tengamos eso en su lugar, ahora podemos ejecutar la imagen de ubuntu para crear el nuevo contenedor y especificar la ruta donde hemos almacenado las variables para pasarlas.

El archivo env.list se almacena en el directorio de inicio en este ejemplo. Por lo tanto, si el suyo está dentro de otro directorio, su ruta podría verse diferente.

Deberíamos ejecutar el comando para pasar estas variables ambientales al nuevo contenedor.

$ docker run -it --env-file ./env.list ubuntu bash

Podemos verificar que hemos pasado con éxito las variables de entorno al contenedor imprimiendo las variables como se muestra a continuación.

/# echo $MYSQL_USER
/# echo $MYSQL_PASS

Producción :

Isaactonyloi
fakepassword

En lugar de los métodos anteriores, podemos crear un archivo de plantilla que contenga todas las variables ambientales que queremos pasar. Esto nos permite anular fácilmente las variables de entorno creadas en este archivo si deseamos realizar algún cambio.

Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

Artículo relacionado - Docker Environment Variable