Cómo pasar variables de entorno a contenedores Docker

¿Sabías que puedes pasar variables de entorno desde tu host a los contenedores Docker? Utilizando esta característica, puedes hacer más eficiente el desarrollo de esos contenedores. Pero antes de entrar en cómo hacerlo, necesitamos abordar qué son las variables de entorno.

Índice de Contenido
  1. ¿Qué son las variables de entorno?
  2. Lo que necesitarás
  3. Cómo establecer una variable de entorno
  4. Cómo pasar la variable a un contenedor
  5. Cómo pasar variables con un archivo .env

¿Qué son las variables de entorno?

Las variables de entorno son valores con nombres dinámicos que pueden ser almacenados y transmitidos a servicios, aplicaciones o scripts. Esta es una forma sencilla de almacenar un valor en una ubicación centralizada (normalmente en la memoria) y luego utilizarlo globalmente. Para obtener más información sobre qué son las variables de entorno, consulta "Linux 101: ¿Qué son las variables de entorno?"

Este tipo de variables son un truco increíblemente útil. Y si eres un desarrollador de contenedores, pueden ayudarte a facilitar un poco tu trabajo.

Déjame mostrarte cómo.

Lo que necesitarás

Lo único que necesitarás para pasar variables de entorno a los contenedores Docker es una instancia en ejecución de Docker y un usuario que forme parte del grupo "docker". Eso es todo. Vamos a pasar algunas variables.

Cómo establecer una variable de entorno

Para pasar una variable de entorno a un contenedor, primero tenemos que establecerla. Voy a demostrar esto en Linux. Si utilizas un sistema operativo diferente para el desarrollo de contenedores, deberás averiguar cómo hacer lo mismo en tu plataforma de elección.

Cómo funciona el protocolo FTP y cómo resolver problemas relacionados con él

Imaginemos que queremos establecer una variable para un usuario de base de datos y planeamos utilizar esa variable para diferentes contenedores. Podríamos establecer una variable llamada DB_USER, que sería viable para cualquier contenedor que utilice cualquier tipo de base de datos. Digamos que el valor de DB_USER será Newsmatic. Para establecer esa variable, emitiríamos el siguiente comando:

export DB_USER=Newsmatic

Para verificar que la variable se haya establecido, emite el siguiente comando:

echo $DB_USER

Deberías ver Newsmatic impreso en la terminal. Eso es todo, has establecido tu variable. Vamos a llevar esto un paso más allá (por el bien del ejemplo) y también establecer una contraseña como variable de entorno. No harías esto en producción, pero es una buena manera de ilustrar cómo se hace. Establece una variable de entorno para la contraseña con:

export DB_PWORD=T3chR3public

Microsoft lanza servicio gratuito de almacenamiento en la nube para usuarios de Windows

Cómo pasar la variable a un contenedor

Ahora que entiendes cómo funcionan las variables de entorno, puedes ver cómo se pueden pasar fácilmente a tus contenedores. Primero demostraré cómo hacerlo desde la línea de comandos de Docker y luego utilizando un archivo .env.

A diferencia de usar variables de entorno en Linux, no puedes establecerlas en el host y luego pasar esas variables establecidas al contenedor de la misma manera que lo harías dentro del sistema host. En otras palabras, no puedes utilizar las variables que acabamos de establecer con el comando Docker de la siguiente manera:

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

Si intentas desplegar el contenedor de esa manera, se ejecutará pero se cerrará inmediatamente. ¿Por qué? Porque a diferencia del sistema Linux, donde puedes definir las variables de entorno de casi cualquier manera que desees, las imágenes de los contenedores esperan ciertas variables. Por ejemplo, la base de datos PostgreSQL no puede utilizar DB_PWORD o DB_USER, ya que espera POSTGRES_PASSWORD y POSTGRES_USER. Para ello, podrías establecer esas variables de entorno en tus hosts de Linux con los siguientes comandos:

export POSTGRES_PASSWORD=t3chr3public
export POSTGRES_USER=Newsmatic

Ok, ahora podemos ejecutar ese mismo comando de esta manera:

Cómo evitar que el archivo de registro de transacciones en SQL Server crezca demasiado grande

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

El comando se ejecutará con éxito y el contenedor se mantendrá en ejecución. Puedes probarlo accediendo a la consola de PostgreSQL dentro del contenedor emitiendo:

docker exec -it postgresql psql -U $POSTGRES_USER

Deberías encontrarte en la consola de PostgreSQL dentro de tu contenedor.

Cómo pasar variables con un archivo .env

Uno de los problemas de pasar variables de entorno como se describe anteriormente es que permanecen en memoria (hasta que las desestables con el comando unset). Para evitar esto, utilizamos un archivo de variables de entorno.

Mantengámonos con las mismas variables que usamos anteriormente. Crea un nuevo archivo .env con el siguiente comando:

Debería su organización migrar a Google Apps desde Microsoft Exchange

nano .env

En ese archivo, pega lo siguiente:

POSTGRES_PASSWORD=t3chr3public
POSTGRES_USER=Newsmatic

Guarda y cierra el archivo.

Ahora, ¿cómo pasamos esas variables? Sencillo, emitiríamos el siguiente comando:

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

Google vs Microsoft: Quién ofrece el mejor almacenamiento en la nube

Asegúrate de utilizar la ruta completa al archivo .env (si no estás ejecutando el comando docker desde el mismo directorio que alberga el archivo). Tu contenedor se desplegará y estará listo para ser utilizado. Puedes probarlo accediendo a la consola de PostgreSQL. La única diferencia es que tendrás que escribir manualmente el usuario (ya que no establecimos la variable POSTGRES_USER en el sistema host). Ese comando sería:

docker exec -it postgresql psql -U Newsmatic

Y así es como se pasan las variables de entorno a un contenedor Docker, ya sea desde la línea de comandos o utilizando un archivo .env. Esperemos que puedas usar este método en tu flujo de trabajo de desarrollo para hacer las cosas un poco más eficientes.

Cómo pasar variables de entorno a contenedores Docker - Nube | Imagen 1 Newsmatic

Cómo cambiar y administrar la cuenta de Administrador local en Windows mediante Group Policy

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Nube, allí encontraras muchos artículos similares a Cómo pasar variables de entorno a contenedores Docker , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.