miércoles, 27 de julio de 2016

CREANDO UNA APLICACIÓN MULTICONTENEDOR CON DOCKER COMPOSE

Para utilizar Docker compose, creamos un directorio y creamos un fichero con el nombre docker-compose.yml que es donde introducimos la receta de lo que debe realizar.

$ mkdir composewp
$ cd composewp/
composewp $ nano docker-compose.yml

En nuestro caso nuestro fichero quedaría de esta forma:

wp:
  image: wordpress
  links:
    - mysql:mysql
  ports:
    - "80"
mysql:
  image: mysql
  environment:
    - MYSQL_ROOT_PASSWORD=miclaverootmysql

La receta es muy sencilla, su funcionamiento sería similar al ejemplo del apartado anterior, estamos creando un contenedor en base a la imagen de wordpress donde le especificamos que esté vinculado al contenedor mysql que definimos más adelante, podemos comprobar que no exponemos ningún puerto del contenedor mysql y definimos la variable de entorno que corresponde a la contraseña del usuario root del servicio mysql. Vamos a ver si todo esto funciona. Primero simplemente vamos a ejecutar la composición mediante el parámetro up y el parámetro -d que significa que se debe ejecutar como servicio.

$ docker-compose up -d
Creating composewp_mysql_1
Creating composewp_wp_1

Vemos que ha creado dos contenedores correctamente, ahora mediante el parámetro ps vamos a ver si están en ejecución.

$ docker-compose ps
      Name                     Command               State           Ports        
----------------------------------------------------------------------------------
composewp_mysql_1   /entrypoint.sh mysqld            Up      3306/tcp             
composewp_wp_1      /entrypoint.sh apache2-for ...   Up      0.0.0.0:32768->80/tcp

Como podemos comprobar, ha iniciado correctamente los dos contenedores, no obstante vamos a ver que nos dice el demonio docker mediante el comando docker ps.

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
77061ae8c289        wordpress           "/entrypoint.sh apach"   18 seconds ago      Up 16 seconds       0.0.0.0:32768->80/tcp   composewp_wp_1
c22cd4fa76d8        mysql               "/entrypoint.sh mysql"   18 seconds ago      Up 17 seconds       3306/tcp                composewp_mysql_1

Según esto, todo parece funcionar correctamente, aún así nos vamos a ir a nuestro navegador a comprobar si realmente se ha iniciado. Como me indica que se ha expuesto el puerto 80 de wordpress al puerto 32768 del anfitrión, ése será el puerto que debo comprobar. Y como podemos ver en la figura, todo funciona perfectamente.


Fuente: Elaboración propia

Ahora vamos a realizar otra prueba con docker compose, vamos a intentar manejar 3 servidores wordpress vinculados al mismo servidor mysql, lo cual resulta francamente sencillo con docker compose, mediante el parámetro scale, le especificamos cual de los contenedores queremos escalar y en qué cantidad.

$ docker-compose scale wp=3
Creating and starting 2 ... done
Creating and starting 3 ... done

En nuestro ejemplo le hemos dicho que queremos 3 contenedores funcionando de wordpress y como ya teníamos uno en ejecución, nos ha ejecutado 2 más, ahora vamos a comprobar que todo funciona perfectamente mediante el parámetro ps.

$ docker-compose ps
      Name                     Command               State           Ports        
----------------------------------------------------------------------------------
composewp_mysql_1   /entrypoint.sh mysqld            Up      3306/tcp             
composewp_wp_1      /entrypoint.sh apache2-for ...   Up      0.0.0.0:32768->80/tcp
composewp_wp_2      /entrypoint.sh apache2-for ...   Up      0.0.0.0:32769->80/tcp
composewp_wp_3      /entrypoint.sh apache2-for ...   Up      0.0.0.0:32770->80/tcp


Y podemos ver como tenemos funcionando los 3 contenedores en 3 puertos distintos.

No hay comentarios:

Publicar un comentario