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.