Uso de ficheros Containerfile parametrizados
El uso de parámetros en la creación de ficheros Containerfile
es una buena forma de añadir flexibilidad a tus construcciones de imágenes. El valor de estos parámetros se pueden pasar a la hora de construir la imagen con el comando podman build
o indicando valores predeterminados si no se especifican en el momento de la construcción.
Puedes encontrar los ficheros que vamos a utilizar en el directorio modulo8/variables
del Repositorio con el código de los ejemplos.
Veamos un ejemplo:
ARG PHP_VERSION=8.2-apache
FROM docker.io/php:${PHP_VERSION}
ARG APP_VERSION=desarrollo
ENV VERSION=${APP_VERSION}
COPY app /var/www/html/
EXPOSE 80
Para crear los parámetros usamos la instrucción ARG
en el fichero Containerfile
. Hemos creado dos parámetros en la definición del fichero Containerfile
:
PHP_VERSION
: Donde vamos a indicar la etiqueta de la imagen PHP que vamos a usar en la construcción. Su valor por defecto es8.2-apache
y como vemos, para hacer referencia a ella usamos${PHP_VERSION}
.APP_VERSION
: Es un parámetro donde vamos a guardar la versión de la aplicación (desarrollo
) y que posteriormente utilizaremos para darle valor a la variable de entornoVERSION
.
Si construimos la imagen sin sobrescribir los valores de los parámetros se tomarán los valores por defecto:
$ podman build -t josedom24/app_php:v1 .
$ podman run -d -p 8081:80 --name app1 josedom24/app_php:v1
$ podman exec -it app1 env
...
VERSION=desarrollo
...
Como vemos se ha creado una imagen a partir de la imagen php:8.2-apache
y se ha creado una variable de entorno VERSION
con el valor por defecto. Si accedemos a la página con un navegador web, veremos la versión de PHP y el valor de la variable de entorno que hemos creado (también podríamos acceder al fichero info.php
para ver esta información):
Podemos crear otra versión de la imagen sobrescribiendo los parámetros de construcción, para ello usamos el parámetro --build-arg
en el comando podman build
:
$ podman build --build-arg PHP_VERSION=7.4-apache --build-arg APP_VERSION=produccion -t josedom24/app_php:v2 .
$ podman run -d -p 8082:80 --name app2 josedom24/app_php:v2
$ podman exec -it app2 env
...
VERSION=produccion
...
Accedemos a esta nueva aplicación y vemos los parámetros que hemos configurado: