Saltar al pie de página
USANDO IRONSECUREDOC

Variables de entorno Docker Compose (Tutorial para desarrolladores)

Desplegar aplicaciones a través de diferentes entornos a menudo conduce a dolores de cabeza de compatibilidad. Una aplicación podría funcionar perfectamente en la máquina de un desarrollador pero encontrar problemas en pruebas o producción debido a diferencias en los sistemas operativos, dependencias o configuraciones. Docker resuelve este problema empaquetando aplicaciones en unidades autocontenidas que incluyen todo lo necesario para ejecutar la aplicación, asegurando que funcione consistentemente en cualquier lugar, desde el desarrollo hasta la producción.

Docker Compose aporta poderosos beneficios a las aplicaciones contenerizadas, especialmente con su uso de variables de entorno para simplificar la configuración a través de diferentes configuraciones. Al permitir que configuraciones clave se gestionen fuera del código, Docker Compose hace que el despliegue de aplicaciones complejas sea más sencillo y seguro. Sobre la base de estos beneficios, este artículo también mostrará cómo puede usar IronSecureDoc para el procesamiento seguro de documentos, aprovechando la flexibilidad de Docker Compose para manejar configuraciones para el cifrado y redacción de manera eficiente.

¿Qué es Docker?

Docker es un sistema de código abierto para facilitar el desarrollo, despliegue y ejecución de aplicaciones en un sistema a través de la contenerización. Los contenedores son unidades portátiles ultraligeras que contienen tanto una aplicación como sus dependencias para que se ejecuten uniformemente en cualquier lugar—desde la máquina del desarrollador hasta los servidores de producción. Los contenedores comparten el núcleo del sistema operativo del host en comparación con las máquinas virtuales tradicionales y, por lo tanto, son mucho más rápidos y eficientes.

Docker Compose Environment Variables (Developer Tutorial): Figura 1 - Página web de Docker

Esto significaría una plantilla virtualizada en forma de imágenes Docker para crear y mantener este conjunto de contenedores. Además, la plataforma contiene Docker Hub, que es de alguna manera un repositorio de imágenes de contenedores. La belleza de esta tecnología radica en su facilidad de uso en lo que respecta a escalabilidad, portabilidad y eficiencia, lo que es una de las razones por las que ha ganado tanta popularidad entre muchos flujos de trabajo de desarrollo DevOps y basados en la nube.

¿Qué son las variables de entorno en Docker-Compose?

En Docker, una variable de entorno en forma de par clave-valor se utiliza para configurar configuraciones en la aplicación contenerizada. Tales variables pueden ser útiles para controlar el comportamiento de la aplicación en sí sin modificar su código, ya que fácilmente pueden cambiarse configuraciones como credenciales de base de datos y claves de API o modos de entorno (por ejemplo: desarrollo, producción).

En Docker, un atributo de entorno puede definirse dentro del Dockerfile, dentro del archivo docker-compose.yml, o pasarse en tiempo de ejecución usando el comando docker run. Con el uso de variables de entorno, Docker permite un despliegue de aplicaciones consistente y flexible a través de diferentes entornos y maneja de manera más efectiva datos sensibles como contraseñas y tokens de API.

¿Cómo crear variables de entorno en Docker?

Podemos definir variables de entorno en Docker de varias maneras. Pueden definirse con un archivo de Docker Compose, el archivo docker-compose.yml, en un archivo de entorno, o incluso en tiempo de ejecución, mientras ejecuta el comando docker run. Recuerde, mantener las variables de entorno separadas del archivo de configuración principal lleva a una organización más fácil de las mismas. Aquí hay una lista de los diversos métodos que se pueden aplicar para definir sus variables.

Establecer variables de entorno en el Dockerfile

Podemos definir variables de entorno directamente en el Dockerfile, usando la instrucción ENV. Esto puede ser útil si desea incluir valores predeterminados para las variables dentro de su imagen Docker.

# Dockerfile
# Set the application environment
ENV APP_ENV=development
# Set the database URL
ENV DATABASE_URL=postgres://user:password@db:1234/mydev

La configuración de las variables de entorno con los valores definidos en el Dockerfile se aplicará automáticamente en el tiempo de ejecución del contenedor.

Establecer variables de entorno en Docker-Compose.yml

Podemos definir variables de entorno para cada servicio dentro de un docker-compose.yml con la ayuda de la palabra clave environment. Esto es útil cuando está usando Docker Compose para gestionar un par de servicios.

version: '3.8'
services:
  myapp:
    image: myapp:latest
    environment:
      - APP_ENV=development
      - DATABASE_URL=postgres://user:password@db:1234/mydev
version: '3.8'
services:
  myapp:
    image: myapp:latest
    environment:
      - APP_ENV=development
      - DATABASE_URL=postgres://user:password@db:1234/mydev
YAML

Establecer variables de entorno en tiempo de ejecución

Podemos especificar variables de entorno al ejecutar un contenedor usando la bandera -e junto con el comando docker run. Esto es bueno para valores transitorios y dinámicos, que probablemente no agregaría al Dockerfile.

docker run -e APP_ENV=development -e DATABASE_URL=postgres://user:password@db:1234/mydev myapp:latest
docker run -e APP_ENV=development -e DATABASE_URL=postgres://user:password@db:1234/mydev myapp:latest
SHELL

Uso de archivos de entorno (.env)

Podemos almacenar variables de entorno en un archivo como .env y cargarlas en sus contenedores Docker. En Docker Compose, nos referiremos a él con la directiva env_file.

# .env file
APP_ENV=production
DATABASE_URL=postgres://user:password@db:1234/mydev
# .env file
APP_ENV=production
DATABASE_URL=postgres://user:password@db:1234/mydev
SHELL

Podemos gestionar múltiples archivos, con variables de entorno fuera de los archivos de configuración mediante la ayuda de archivos de entorno.

¿Qué es IronSecureDoc?

IronSecureDoc para Docker permite a los desarrolladores agregar fácilmente una capacidad de procesamiento seguro de documentos a sus aplicaciones contenerizadas. Habiendo aprendido Docker, puede encapsular su aplicación ASP.NET Core con IronSecureDoc en un entorno homogéneo que facilita su despliegue y escalado. Para hacer esto, construirá un Dockerfile que orqueste la construcción de su aplicación ASP.NET Core usando la biblioteca IronSecureDoc y posiblemente otros scripts de instalación o configuraciones necesarias para que las cosas funcionen.

Docker Compose Environment Variables (Developer Tutorial): Figura 2 - Página web de IronSecureDoc

Además, incluye un archivo docker-compose.yml declarando las dependencias del servicio y las variables de entorno y los puertos mapeados para comenzar. Esto hace que la realización de tareas de seguridad de documentos sea mucho más accesible, para que su aplicación pueda funcionar de manera eficiente y efectiva en un entorno diferente al utilizado durante el desarrollo o la producción. La instalación y configuración de IronSecureDoc, como en el caso de Docker, será necesaria para realizar adecuadamente sus capacidades: cifrado de documentos, redacción, etc.

Características principales de IronSecureDoc

IronSecureDoc ofrece una gama de potentes características para la seguridad de PDFs y gestión de documentos:

  • Cifrado: Proporciona cifrado de 128 o 256 bits con seguridad basada en contraseña para proteger la confidencialidad del documento.
  • Redacción: Elimina información sensible, como identificadores personales, para cumplir con los estándares y regulaciones de privacidad.
  • Firma digital: Soporta firma digital y notarización con certificados .pfx o .p12 para garantizar la autenticidad del documento.
  • REST API: API flexible que permite una integración fluida con otros softwares y flujos de trabajo.
  • Integración Docker: El soporte nativo para Docker simplifica el despliegue y escalado para aplicaciones en la nube o locales.

Estas características hacen de IronSecureDoc una excelente opción para sectores que manejan documentos sensibles, como legal, salud y finanzas.

Instalación y ejecución de IronSecureDoc

Paso 1

Para instalar IronSecureDoc, ejecute el siguiente comando en una ventana de terminal o en el Símbolo del sistema para obtener la imagen Docker de IronSecureDoc del repositorio.

docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
SHELL

Docker Compose Environment Variables (Developer Tutorial): Figura 3 - Salida de consola para obtener la imagen de IronSecureDoc

Paso 2

Una vez que se ha descargado la imagen de IronSecureDoc, podemos usar el siguiente comando de docker-compose para ejecutar la imagen en el contenedor Docker.

docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
SHELL

Docker Compose Environment Variables (Developer Tutorial): Figura 4 - Salida de consola al ejecutar la imagen de IronSecureDoc

Utilizamos el contenedor Docker para ejecutar el repositorio oficial de Iron Software. La línea de comando mostrada arriba se divide en varias partes que se explican a continuación.

Explicación del comando

  • docker container run - Este comando utiliza la imagen dada para construir y lanzar un nuevo contenedor Docker.
  • --rm - Limpia automáticamente el contenedor inmediatamente una vez que deja de correr. Elimina todos los contenedores no utilizados en el momento de completar cualquier proceso.
  • -p 8080:8080 - Publica el puerto 8080 del contenedor, para que pueda acceder a él en su máquina desde http://localhost:8080.
  • -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> - Establecer una variable de entorno en el contenedor en ejecución llamada IronSecureDoc_LicenseKey que le permite activar y utilizar características licenciadas de IronSecureDoc. Reemplace <IRONSECUREDOC_LICENSE_KEY> con su clave real.
  • -e ENVIRONMENT=Development - La variable de entorno se establece en Development. Esto significa que el contenedor necesita ejecutarse en modo desarrollo. Normalmente, este contenedor se usa para casos de pruebas o depuración; aparte de eso, varía según configuraciones no de producción.
  • -e HTTP_PORTS=8080 - Esta variable de entorno se utiliza para especificar que el contenedor debe exponer y escuchar el puerto 8080 para el tráfico HTTP. Asegura el acceso al servicio dentro del contenedor pasando por este puerto particular.
  • ironsoftwareofficial/ironsecuredoc:latest - Esta es la imagen Docker. Esto especifica que la última versión de la imagen debe ser usada del registro Docker para IronSecureDoc.

Contenedor IronSecuredoc

La REST API de IronSecureDoc permite a los usuarios redactar, certificar y cifrar documentos una vez que se lanza en Docker. Aquí hay un enlace a los puntos finales de API y documentación con Swagger UI, una vez que haya lanzado IronSecureDoc en un contenedor Docker: http://localhost:8080/swagger/index.html.

Docker Compose Environment Variables (Developer Tutorial): Figura 5 - Swagger UI para que interactúe con los puntos finales de API

De la instancia anterior, podemos enviar una solicitud POST a la API de IronSecureDoc para enviar un documento para cifrado:

curl -X 'POST' \
  'http://localhost:8080/v1/document-services/pdfs/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
curl -X 'POST' \
  'http://localhost:8080/v1/document-services/pdfs/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
SHELL

Al hacer esto, IronSecureDoc recibirá el documento y lo cifrará adecuadamente.

Conclusión

En resumen, las variables de entorno de Docker Compose permiten la configuración de aplicaciones de una manera muy flexible y eficiente, ya que los detalles de configuración se separan automáticamente del código de la aplicación. En consecuencia, gestionar diferentes entornos como desarrollo, prueba y producción es más sencillo, ya que solo variables como claves de API, credenciales de base de datos y configuraciones de una aplicación necesitan ser cambiadas en vez de su código.

Usar Docker Compose para implementar IronSecureDoc utiliza variables de entorno para manejar de manera segura la información de la licencia, por ejemplo, IronSecureDoc_LicenseKey, y también para especificar los puertos HTTP o el modo de entorno preferido, ya sea desarrollo o producción utilizando variables de entorno. Usar variables de entorno para la configuración hace más fácil desplegar IronSecureDoc con configuraciones mucho menos desordenadas y difíciles de escalar, y aumenta la seguridad.

Las características avanzadas son accesibles a través de una licencia válida de IronSecureDoc. La aplicación de la herramienta depende estrictamente de ciertos términos de uso. También puede utilizar otras bibliotecas de alto rendimiento que Iron Software ofrece para facilitar y acelerar el proceso de desarrollo, proporcionando funcionalidades sólidas al trabajar con PDFs, reconocimiento de texto y códigos de barras para cualquier aplicación concebible.

Docker Compose Environment Variables (Developer Tutorial): Figura 6 - Página de licencias de IronSecureDoc

Preguntas Frecuentes

¿Cómo puede mejorar Docker Compose la implementación de aplicaciones?

Docker Compose mejora la implementación de aplicaciones al usar variables de entorno para gestionar configuraciones externamente, permitiendo un fácil escalado y adaptación en diferentes entornos sin modificar el código de la aplicación.

¿Qué papel juegan las variables de entorno en Docker?

Las variables de entorno en Docker son pares clave-valor que configuran las configuraciones de la aplicación de forma independiente del código, permitiendo una gestión segura de información sensible como contraseñas y claves API.

¿Cómo se integra IronSecureDoc con Docker para el procesamiento seguro de documentos?

IronSecureDoc se integra con Docker proporcionando una imagen Docker que puede ser descargada y ejecutada usando comandos de Docker. Utiliza variables de entorno para configurar las características de procesamiento seguro de documentos como el cifrado, la redacción y la firma digital.

¿Cuáles son los beneficios de usar variables de entorno en Docker Compose?

Usar variables de entorno en Docker Compose permite una gestión de configuración flexible, mejora la seguridad al mantener los datos sensibles fuera del código de la aplicación y optimiza los procesos de implementación en varios entornos.

¿Cómo se puede ejecutar IronSecureDoc en un entorno Docker?

Para ejecutar IronSecureDoc en un entorno Docker, puedes usar el comando docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey= -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest, especificando las variables de entorno necesarias para la configuración.

¿Qué características ofrece IronSecureDoc para la seguridad de documentos?

IronSecureDoc ofrece características como el cifrado de documentos, la redacción, la firma digital y la integración sin problemas con Docker para el manejo seguro de documentos en entornos contenedorizados.

¿Cómo se establecen las variables de entorno en una configuración de Docker Compose?

Las variables de entorno se pueden establecer en Docker Compose usando un archivo docker-compose.yml, archivos de entorno o comandos de tiempo de ejecución, proporcionando flexibilidad y seguridad en la gestión de configuraciones de aplicaciones.

¿Por qué es importante separar la configuración del código en las implementaciones Docker?

Separar la configuración del código mediante variables de entorno es importante en las implementaciones Docker ya que mejora la seguridad, simplifica la gestión en diferentes entornos y reduce el riesgo de exponer información sensible.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más