Curso Docker - 13. Cómo crear un Dockerfile

Aunque ya hemos visto cómo crear un Dockerfile y generar una imagen con él, vamos a ver un ejemplo más completo: crearemos un servidor web con Apache y PHP 7.2 para poder servir y desarrollar páginas web.

Vamos a crear una nueva carpeta o proyecto, llamado apache2-php72-webserver. Dentro estará el archivo Dockerfile, que tendrá el siguiente contenido:

FROM ubuntu:18.04
LABEL maintainer="info@geekytheory.com"

RUN apt update
RUN apt -y upgrade

RUN DEBIAN_FRONTEND=noninteractive apt -y install apache2 libapache2-mod-php7.2 php7.2-mysql php7.2-gd php-pear php-dev php7.2-curl php7.2-ldap curl

RUN apt -y install vim

# Habilitar módulos de Apache
RUN phpenmod openssl
RUN a2enmod php7.2
RUN a2enmod rewrite

# Configurar las variables de entorno de Apache
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

Además, vamos a crear una carpeta apache-config que va a contener el archivo web-application.conf:

<VirtualHost *:80>
  DocumentRoot /var/www/site/web-application
<Directory /var/www/site/web-application/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Finalmente, añadiremos el código de nuestra aplicación web al archivo index.php dentro de la carpeta web-application:

<?php

Para generar la imagen, vamos a hacer un build:

docker build -t "apache-php72-webserver:1.0" .

Ahora que ya tenemos la imagen Docker creada, vamos a verla con docker images.