Crear un DockerFile con PHP + MySQL (MARIADB)

Tiempo de lectura: 2 minutos

Aquí te dejo un ejemplo de un Dockerfile para crear un servidor web con PHP y MariaDB:

# Definimos la imagen base de Docker
FROM php:7.4-apache

# Actualizamos los repositorios de paquetes
RUN apt-get update

# Instalamos las dependencias necesarias
RUN apt-get install -y \
    mariadb-client \
    libzip-dev \
    zip \
    unzip

# Instalamos las extensiones de PHP necesarias
RUN docker-php-ext-install mysqli pdo pdo_mysql zip

# Copiamos el código fuente de nuestra aplicación al contenedor
COPY . /var/www/html/

# Definimos la configuración de Apache
COPY docker/apache2.conf /etc/apache2/apache2.conf
RUN a2enmod rewrite

# Exponemos el puerto 80 para acceder al servidor web
EXPOSE 80

# Definimos la configuración de MariaDB
ENV MYSQL_ROOT_PASSWORD=secret
ENV MYSQL_DATABASE=mydb
ENV MYSQL_USER=myuser
ENV MYSQL_PASSWORD=mypassword

# Ejecutamos el script de inicialización de MariaDB
COPY docker/init.sql /docker-entrypoint-initdb.d/

En este ejemplo, creamos una imagen a partir de la imagen base de php:7.4-apache. Luego, actualizamos los repositorios de paquetes y instalamos las dependencias necesarias, como mariadb-client, libzip-dev, zip y unzip. También instalamos las extensiones de PHP necesarias para ejecutar aplicaciones PHP con MySQL, como mysqli, pdo, pdo_mysql y zip.

Luego, copiamos el código fuente de nuestra aplicación al contenedor y definimos la configuración de Apache. En este ejemplo, copiamos el archivo docker/apache2.conf, que contiene la configuración de Apache, al directorio /etc/apache2/ y habilitamos el módulo rewrite de Apache.

Finalmente, exponemos el puerto 80 para acceder al servidor web y definimos la configuración de MariaDB. En este ejemplo, establecemos las variables de entorno MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER y MYSQL_PASSWORD, y ejecutamos el script de inicialización de MariaDB, que copiamos al directorio /docker-entrypoint-initdb.d/.

Este Dockerfile se puede utilizar para construir una imagen de Docker que contenga un servidor web con PHP y MariaDB. Para construir la imagen, puedes ejecutar el siguiente comando en la misma carpeta donde se encuentra el Dockerfile:

docker build -t myapp .

Luego, puedes arrancar un contenedor a partir de la imagen creada con el siguiente comando:

docker run -p 80:80 --name myapp-container -d myapp

Este comando arranca un contenedor en segundo plano y lo nombra myapp-container. El puerto 80 del contenedor se mapea al puerto 80 del host, lo que significa que puedes acceder al servidor web desde un navegador web utilizando la dirección IP del host.

¡Espero que este ejemplo te sea de utilidad!

Deja un comentario