En esta guía, aprenderá a configurar LEMP Stack (Nginx, MariaDB y PHP) con Docker Compose en Debian/Ubuntu. Docker Compose es una herramienta para crear y ejecutar aplicaciones Docker de múltiples contenedores. Le permite usar un archivo YAML para configurar los servicios (contenedores) que componen su aplicación, junto con sus dependencias y otras configuraciones, y luego ejecutarlos y administrarlos como una sola unidad. Aquí intentamos mostrarle cómo instalar LEMP Stack con Docker Compose en distribuciones Debian y Ubuntu. Una guía completa para la configuración de LEMP Stack con Docker Compose en Debian/Ubuntu Antes de comenzar la configuración de LEMP Stack con Docker Compose, debe acceder a su servidor como usuario no root con privilegios sudo. Además, debe instalar Docker y Docker Compose en su servidor. En esta guía, para mostrarle los pasos de instalación, utilizamos Debian 12. Para ello, puede consultar las siguientes guías: Configuración inicial del servidor con Debian 12 Instalar Docker en Debian 12 Instalar Docker Compose en Debian 12 Una vez que haya terminado con estos requisitos, siga los pasos a continuación para completar esta guía. Paso 1: cree los directorios necesarios para la configuración de LEMP Stack En este punto, puede verificar su instalación de Docker Compose verificando su versión: versión de docker compose Ejemplo de salida Docker Compose versión v2.24.5 Luego, debe crear un directorio principal para LEMP Stack. Para hacer esto, ejecute el siguiente comando: mkdir lemp Luego, cree los subdirectorios para la configuración de Nginx y los archivos PHP con el siguiente comando: mkdir lemp/{nginx-conf,php-files} Paso 2: cree un archivo YAML de pila LEMP en Debian / Ubuntu En este punto, debe cambiar a su directorio LEMP con el siguiente comando: cd lemp Luego, debe crear un archivo Docker YAML para que su pila LEMP implemente los servicios Nginx, MariaDB y PHP. Para hacer esto, puede usar el editor de texto que desee, como Vi Editor o Nano Editor: sudo vi docker-compose.yml Agregue el siguiente contenido de configuración al archivo: versión: ‘3.8’ # Servicios servicios: # Servicio PHP php: build: dockerfile: volúmenes php-dockerfile: – ‘./php-files:/var/www/html’ depende_on: – mariadb # Servicio Nginx nginx: imagen: nginx:últimos puertos: – enlaces 80:80: – volúmenes ‘php’: – ‘./php-files:/var/www/html’ – ‘./nginx-conf:/etc/nginx/conf.d’ depende_on: – php # MariaDB Servicio mariadb: imagen: mariadb:10.9 entorno: MYSQL_ROOT_PASSWORD: your_password volúmenes: – mysqldata:/var/lib/mysql # Servicio phpMyAdmin phpmyadmin: imagen: phpmyadmin/phpmyadmin: últimos puertos: – 8080:80 entorno: PMA_HOST: mariadb depende_on: – mariadb # Volúmenes volúmenes: mysqldata: Cuando haya terminado, Guarde y cierre el archivo. Como puede ver, agregamos las imágenes para implementar Nginx, PHP, MariaDB y phpMyAdmin. Paso 3: crear un archivo Docker PHP-FPM en Debian/Ubuntu En este punto, debe crear un archivo Docker para PHP-FPM dentro de su directorio LEMP Stack. Para hacer esto, puede usar la imagen oficial más reciente: sudo vi php-dockerfile Agregue el siguiente contenido al archivo: FROM php:8.2-fpm # Instalando dependencias para los módulos PHP EJECUTE apt-get update && \ apt-get install – y zip libzip-dev libpng-dev # Instalación de módulos PHP adicionales EJECUTE docker-php-ext-install mysqli pdo pdo_mysql gd zip Si necesita más extensiones PHP, puede agregarlas al archivo. Guarde y cierre el archivo. El directorio “php-files” apunta a “/var/www/html” en el contenedor PHP, donde PHP busca scripts PHP ejecutables. Entonces, para realizar pruebas, creamos el archivo index.html y el contenido de información PHP simple en el archivo: sudo vi php-files/index.php Agregue el siguiente código de muestra:
Guarde y cierre el archivo. Paso 4: crear un archivo de configuración de Nginx para la configuración de la pila LEMP. Nginx debe funcionar con archivos PHP. Por lo tanto, necesita crear un archivo de configuración de Nginx dentro del directorio nginx-conf: sudo vi nginx-conf/nginx.conf Agregue la siguiente configuración de Nginx al archivo: server { listening 80 default_server; escuchar [::]:80 servidor_predeterminado; nombre_servidor localhost; raíz /var/www/html; índice index.php index.html; ubicación / { try_files $uri $uri/ /index.php?$args; } ubicación ~* \.php$ { fastcgi_pass php:9000; incluir fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } } Cuando haya terminado, guarde y cierre el archivo. Paso 5: ejecutar LEMP Stack con Docker Compose En este punto, simplemente puede iniciar y ejecutar su servicio usando el siguiente comando dentro del directorio LEMP: docker compose up -d Las imágenes comenzarán a descargarse. Una vez que todo esté completo, obtendrá el siguiente resultado: Ahora puede acceder a su información PHP y a phpMyAdmin desde su navegador web siguiendo las siguientes URL: http://server-ip:8080 http://server-ip Para administrar el Docker Containers, puede consultar esta guía sobre Administrar contenedores Docker. Conclusión Docker Compose se usa comúnmente en el desarrollo y pruebas de múltiples servicios. Simplificará el proceso de definición, ejecución y gestión de aplicaciones Docker de múltiples contenedores. En este punto, ha aprendido la configuración de LEMP Stack con Docker Compose en Debian/Ubuntu. Espero que lo disfrutes. Además, es posible que le interese leer los siguientes artículos: Ejecutar contenedores Docker con Portainer Iniciar un contenedor Docker con estado cerrado Instalar MySQL en un contenedor Docker en Debian 12 Ejecutar un script de Python en un contenedor Docker de Linux Instalar la GUI de Portainer Docker en Debian 12