Crear imagen docker personalizada

Alguna vez nos puede ocurrir que queremos una imagen de docker con algunos servicios muy concretos y no la encontramos o no tiene la versión de php que queremos, por ejemplo, o simplemente no nos aporta seguridad el creador de la imagen. SI no encontramos lo que queremos, podemos hacerlo nosotros mismos. Con el siguiente ejemplo vamos a crear una imagen de docker con nginx y php 7.2 con algunas librerías:

FROM ubuntu:18.04
MAINTAINER occentus
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update 
RUN apt-get install -y \
php7.2 \
php7.2-common \
php7.2-curl \
php7.2-dev \
php7.2-fpm \
php7.2-gd \
php7.2-json \
php7.2-ldap \
php7.2-mbstring \
php7.2-mysql \
php7.2-opcache \
php7.2-pgsql \
php7.2-zip
RUN apt-get install nginx supervisor -y
RUN mkdir -p /var/run/php
EXPOSE 80/tcp
EXPOSE 443/tcp
COPY supervisord.conf /etc/supervisord.conf
CMD ["/usr/bin/supervisord"]
RUN apt-get clean all

Este contenido lo debemos guardar en un fichero con el nombre de «dockerfile». Para este ejemplo, nos hace falta crear otro fichero, en el mismo directorio que el anterior con el nombre supervisord.conf y con el siguiente contenido:

[supervisorctl]
[program:php-fpm]
command=/usr/sbin/php-fpm7.2 -F
autostart=true
autorestart=true
priority=5
stdout_events_enabled=true
stderr_events_enabled=true
[program:nginx]
command=/usr/sbin/nginx -g 'daemon off;'
autostart=true
autorestart=true
priority=10
stdout_events_enabled=true
stderr_events_enabled=true

Una vez tenemos los 2 ficheros guardados, accedemos al directorio desde la terminal y ejecutamos:

 docker build -t nombre_de_la_imagen .

Aclarar que el punto al final de la linea anterior es intencionado.

Artículos relacionados