Para añadir alguna configuración específica a la hora de lanzar un contenedor, se usan variables de entorno del contenedor cuyos valores se especifican al crear el contenedor para realizar una configuración concreta del mismo.

Por ejemplo, si estudiamos la documentación de la imagen bitnami/mysql en Docker Hub, podemos comprobar que podemos definir un conjunto de variables de entorno como MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD, etc., que nos permitirán configurar de alguna forma determinada nuestro servidor de base de datos (indicando la contraseña del usuario root, creando una determinada base de datos o creando un usuario con una contraseña por ejemplo).

De la misma manera, al especificar los contenedores que contendrán los Pods que se van a crear desde un Deployment, también se pondrán inicializar las variables de entorno necesarias.

Configuración de aplicaciones usando variables de entorno

Utilizaremos el fichero mysql-deployment-env.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: contenedor-mysql
          image: bitnami/mysql
          ports:
            - containerPort: 3306
              name: db-port
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: my-password

En el apartado containers hemos incluido la sección env donde vamos indicando, como una lista, el nombre de la variable (name) y su valor (value).

Vamos a trabajar con el usuario developer, creando un nuevo proyecto:

oc new-project mysql

Vamos a comprobar si realmente se ha creado el servidor de base de datos con esa contraseña del root:

oc apply -f mysql-deployment-env.yaml

oc get all
...
NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mysql-env            1/1     1            1           5s

Comprobamos que se ha creado una variable del entorno en el contenedor:

oc exec -it deployment.apps/mysql-env -- env
...
MYSQL_ROOT_PASSWORD=my-password

Y finalmente realizamos un acceso a la base de datos:

oc exec -it deployment.apps/mysql-env -- bash -c "mysql -u root -p -h 127.0.0.1"
Enter password:
...
mysql>

Updated: