Si te has adentrado un poco en el mundo Docker, sabrás que Docker Compose es una utilidad de gran potencial, donde puedes crear configuraciones con una facilidad descomunal respecto a solamente programar un fichero Dockerfile. Te cuento que me ha sido difícil dejar los malos hábitos, en este caso, te lo expongo de la siguiente manera, si deseo ir más allá, adentrarme en la cultura DevOps, pues me será necesario iniciarme en diferentes metodologías, herramientas y demás. El mal hábito del que te hablo se llama, XAMPP, WAMP, entre otros, así que decidí tirarme de lleno con Docker, que, en este caso, me lo estoy replanteando, pues se ha hecho enterprise y no lo sé, igual me instalo el Podman. A lo que quiero llegar, es que te profesionalices levantando un Stack LAMP (GNU/Linux, Apache, MySQL y PHP) por medio de contenedores. Ahora, perdona, pero haré de cuenta que ya tienes instalado el docker y la extensión de Docker Compose, por lo que pasaré directo al grano.
Puedes ver el vídeo donde te explico todo desde acá, en el canal de Core Stack.
Descargar repositorio Docker LAMP
Te dejo el repositorio que te será necesario bajar para esta práctica, donde lo he preparado para ti con mucho cariño: Docker LAMP.
$ git clone https://github.com/jersonmartinez/docker-lamp.git
$ cd docker-lamp
Se muestra el árbol de directoios y ficheros.
$tree
.
├── Dockerfile
├── LICENSE
├── README.md
├── conf
├── docker-compose.yml
├── dump
│ └── myDb.sql
└── www
└── index.php
Levanta Stack LAMP
Después de que accedas al repositorio, no hará falta hacer más nada que lanzar el Docker Compose.
$ docker-compose up -d
Creating network "docker-lamp_default" with the default driver
Creating docker-lamp_db_1 ... done
Creating docker-lamp_www_1 ... done
Creating docker-lamp_phpmyadmin_1 ... done
Por supuesto, como esta instalación la he hecho varias veces, ya no es necesario que baje las imágenes ni tenga que crear los volúmenes, así que tu salida será un poco más aflorada.
Verificando contenedores
Los contenedores están corriendo sin problemas, compartiendo la red por defecto, interconectados entre sí, se conocen y por lo tanto, pueden converger para presentar una solución.
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------
docker-lamp_db_1 docker-entrypoint.sh --def ... Up 0.0.0.0:3306->3306/tcp, 33060/tcp
docker-lamp_phpmyadmin_1 /docker-entrypoint.sh apac ... Up 0.0.0.0:8000->80/tcp
docker-lamp_www_1 docker-php-entrypoint apac ... Up 0.0.0.0:80->80/tcp
Web Server
✅ Se inicia el servidor web mediante la dirección local o loopback: http://127.0.0.1/
PHPMyAdmin
✅ Se inicia el sistema gráfico que gestiona las bases de datos con el motor MySQL mediante la dirección local o loopback: http://127.0.0.1:8000/ en el puerto correspondiente.
Correr un proyecto web PHP
He colocado un proyecto web, en este caso, este mismo sitio web. La ruta donde podrás poner tu sitio web será en el directorio www/. Por lo que, mi proyecto estará con el nombre www/Crashell/.
Explicación del código
No expondré código desde aquí, sino más bien, te dejaré un vídeo que he realizado para explicar el funcionamiento del Docker Compose, Dockerfile y cómo adaptar un proyecto web PHP a un Stack LAMP utilizando contenedores, precisamente haciendo referencia a este contenido.
He escrito en OpenWebinars un artículo con mayores detalles donde puedes orientarte sobre conceptos o algún detalle que no haya quedado claro. Igualmente, déjame por acá las dudas.
With supporting text below as a natural lead-in to additional content.
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.