Continuando la serie de tutoriales sobre Crear un contenedor Docker Compose con Apache + PHP + MySQL (XAMP con Docker), os voy a enseñar cómo crear un fichero Docker Compose que tiene Apache2, PHP, MySQL, Python y PHPMyAdmin incluido. Recuerda que puedes utilizar este código y contenedores para tus proyectos y se basan en la imagen oficial de cada entorno. Al final de este artículo podrás encontrar un enlace al código en Github.
Para comenzar vamos a tomar de base el Docker Compose del tutorial anterior en el que habíamos instalado XAMP (enlace superior)
version: "3" #Indicamos la version docker compose que utilizamos #Y luego los servicios que vamos a implementar services: contendor_mysql: image: mysql:5.7 container_name: mysql-container environment: MYSQL_DATABASE: db # Puedes utilizar el usuario que quieras, en el ejemplo usamos test MYSQL_USER: test # Contraseña para el usuario de MySQL MYSQL_PASSWORD: testp # Contraseña para root MYSQL_ROOT_PASSWORD: root volumes: # Montamos un volumen para MySQL para no perder los datos de bd - ./mysql:/var/lib/mysql expose: - 3306 ports: - 3306:3306 #Aquí indicamos el nombre que queramos mi_servicio_apache: #Indicamos la carpeta donde guardamos el Docker File build: context: ./Dockerfile #Indicamos el archivo dockerfile de este contenedor dockerfile: apache_file #Eliminamos esta línea que se sustituye por el dockerfile #image: php:7.0-apache container_name: apache-container volumes: #Carpeta donde guardaremos los archivos web : carpeta interna de Docker - ./www/:/var/www/html expose: #Puerto que queremos exponer a para poder compartirlo con otros contenedores - 80 ports: # Puerto de nuestra máquina : puerto dentro de Docker (siempre va a ser el 80 para apache o 443 para SSL) - 80:80 links: - contendor_mysql
Con esta estructura de carpetas
Ahora vamos a añadir el contenedor oficial de PHPMyAdmin
miservicio_phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin-container ports: - 776:80
Este pequeño contenedor ya despliega PHPMyadmin sobre el puerto 776 de nuestra máquina.
Ahora vamos a añadir este contenedor a nuestro archivo docker-compose.yml
version: "3" #Indicamos la version docker compose que utilizamos #Y luego los servicios que vamos a implementar services: contendor_mysql: image: mysql:5.7 container_name: mysql-container environment: MYSQL_DATABASE: db # Puedes utilizar el usuario que quieras, en el ejemplo usamos test MYSQL_USER: test # Contraseña para el usuario de MySQL MYSQL_PASSWORD: testp # Contraseña para root MYSQL_ROOT_PASSWORD: root volumes: # Montamos un volumen para MySQL para no perder los datos de bd - ./mysql:/var/lib/mysql expose: - 3306 ports: - 3306:3306 #Aquí indicamos el nombre que queramos mi_servicio_apache: #Indicamos la carpeta donde guardamos el Docker File build: context: ./Dockerfile #Indicamos el archivo dockerfile de este contenedor dockerfile: apache_file #Eliminamos esta línea que se sustituye por el dockerfile #image: php:7.0-apache container_name: apache-container volumes: #Carpeta donde guardaremos los archivos web : carpeta interna de Docker - ./www/:/var/www/html expose: #Puerto que queremos exponer a para poder compartirlo con otros contenedores - 80 ports: # Puerto de nuestra máquina : puerto dentro de Docker (siempre va a ser el 80 para apache o 443 para SSL) - 80:80 links: - contendor_mysql contenedor_phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin-container ports: - 776:80 links: - contendor_mysql:db
He añadido contenedor_phpmyadmin al final del fichero y he creado el link con base de datos haciendo referencia a db (variable interna del contenedor).
NOTA: Hay una errata en el código (contenedor_mysql es contendor_mysql)
Para comprobar que funciona ejecutamos el siguiente comando:
sudo docker-compose up -d
Y para comprobar que funciona visitamos http://localhost:776
Para iniciar sesión podemos utilizar el usuario creado en el contenedor Docker
MYSQL_DATABASE: db # Puedes utilizar el usuario que quieras, en el ejemplo usamos test MYSQL_USER: test # Contraseña para el usuario de MySQL MYSQL_PASSWORD: testp # Contraseña para root MYSQL_ROOT_PASSWORD: root
Y por aquí os dejo el código en Github para que podáis ejecutarlo.
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.