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!
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.