En este tutorial, te mostraré cómo crear un archivo docker-compose.yml
para configurar un entorno de desarrollo local completo con PHP, NGINX, MariaDB, Nginx Proxy Manager para SSL y PhpMyAdmin.
Comenzando
Lo primero que debemos hacer es crear un directorio en nuestra máquina y crear un archivo docker-compose.yml
dentro de él. Para ello, puedes utilizar tu editor de texto favorito. En este tutorial, usaremos nano
como ejemplo:
mkdir my-app cd my-app nano docker-compose.yml
Configurando el archivo docker-compose.yml
Una vez dentro del archivo docker-compose.yml
, comenzamos configurando nuestra red:
version: '3.9' networks: app-network: driver: bridge
En este caso, estamos utilizando la versión 3.9
de Docker Compose. Luego, creamos una red con el nombre app-network
. Esta red se utilizará para conectar todos los contenedores que crearemos más adelante.
A continuación, creamos los servicios que necesitamos. En este ejemplo, creamos cuatro servicios: php
, nginx
, db
, y nginx-proxy-manager
.
services: php: image: php:7.4-cli networks: - app-network nginx: image: nginx #ports: #- "80:80" #- "443:443" depends_on: - php volumes: - ./webdata:/usr/share/nginx/html networks: - app-network db: image: mariadb restart: always environment: MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: example MYSQL_USER: example MYSQL_PASSWORD: example networks: - app-network nginx-proxy-manager: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt networks: - app-network
PHP
El servicio php
se encarga de ejecutar nuestro código PHP. En este ejemplo, usamos una imagen personalizada que creamos anteriormente y la especificamos en la clave build
. Además, especificamos la red a la que debe conectarse el servicio.
NGINX
El servicio nginx
se encarga de ejecutar el servidor web NGINX y de manejar las solicitudes HTTP y HTTPS. También especificamos los puertos 80
y 443
para que el servicio sea accesible desde el host. Además, usamos la clave depends_on
para asegurarnos de que el servicio php
se inicie antes de que se inicie el servicio nginx
. Esto es necesario porque el servidor web NGINX necesita el módulo php-fpm
para procesar las solicitudes PHP.
MariaDB
El servicio db
se encarga de ejecutar el servidor de base de datos MariaDB. En este ejemplo, estamos utilizando la imagen oficial de MariaDB. También especificamos las variables de entorno necesarias para crear una base de datos y un usuario de prueba.
Nginx Proxy Manager
El servicio nginx-proxy-manager
se encarga de manejar los certificados SSL para nuestro sitio web y redirigir el tráfico HTTPS a nuestro servidor NGINX. Utilizamos la imagen oficial de Nginx Proxy Manager y especificamos los puertos 81
, `
443
y 81
para que el servicio sea accesible desde el host. Además, especificamos un volumen para que la configuración de Nginx Proxy Manager se almacene en nuestra máquina local.
Ejecutando el archivo docker-compose.yml
Una vez que hayamos terminado de configurar nuestro archivo docker-compose.yml
, podemos iniciar nuestros servicios con el siguiente comando:
docker-compose up -d
Este comando inicia los servicios definidos en nuestro archivo docker-compose.yml
en modo detach (en segundo plano). Después de ejecutar este comando, podemos ver los contenedores que se han creado con el siguiente comando:
docker ps
Accediendo a nuestros servicios
Después de ejecutar el comando docker-compose up -d
, podemos acceder a nuestros servicios de la siguiente manera:
Servidor web
Podemos acceder a nuestro servidor web NGINX ingresando la dirección http://localhost
o https://localhost
en nuestro navegador web.
Nginx Proxy Manager
Podemos acceder a Nginx Proxy Manager ingresando la dirección http://localhost:81
en nuestro navegador web. Aquí podemos configurar los certificados SSL y las redirecciones para nuestro sitio web.
Conclusión
En este tutorial, hemos creado un archivo docker-compose.yml
para configurar un entorno de desarrollo local completo con PHP, NGINX, MariaDB, Nginx Proxy Manager para SSL y PhpMyAdmin. También hemos explicado cómo funciona cada servicio y cómo ejecutar nuestro archivo docker-compose.yml
. Ahora puedes usar este archivo como plantilla para crear tus propios proyectos con Docker Compose.
Aquí te explico cómo configurar Nginx Proxy Manager por separado:
Certificados SSL (let’s encrypt) en Docker usando Nginx Proxy Manager
No te pierdas más tutoriales docker https://devcodelight.com/category/docker/
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.
2 comentarios en «Crear un Docker Compose con PHP + Nginx + MySQL (MariaDB) + Nginx Proxy Manager (para certificados SSL https)»