Contenedor Docker Compose con Apache + PHP + MySQL + PHPMyAdmin + Python (XAMP con PHPMyAdmin con Docker)

Tiempo de lectura: 3 minutos

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.

Deja un comentario