Docker-compose es una herramienta de línea de comandos para definir y configurar aplicación docker multicontenedors. En otras palabras, podemos decir que docker compose se usa para vincular múltiples contenedores e implementar aplicaciones desde un solo comando. Supongamos que queremos implementar un sitio de WordPress dentro de un contenedor, por lo que para implementarlo necesitaría un contenedor de servidor web (Apache/nginx) y un contenedor de base de datos (mysql/mariadb).
Con Docker Compose podemos incluir fácilmente múltiples contenedores dentro de nuestro archivo docker-compose y también podemos definir todas las demás configuraciones requeridas para mi aplicación. La herramienta Docker-compose se puede usar en entornos de desarrollo, prueba y preparación, aparte de estos, se puede usar fácilmente en CI (Integración continua) flujo de trabajo
En este artículo, analizaremos cómo instalar Docker Compose en un host Docker existente y luego aprenderemos cómo implementar contenedores desde el comando docker-compose. En nuestro artículo anterior ya hemos discutido los siguientes temas.
Estoy asumiendo aquí que tenemos un host docker existente en funcionamiento. Ahora pasemos a los pasos de instalación de la herramienta docker compose.
Pasos de instalación de Docker Compose
Inicie sesión en su host docker y ejecute los siguientes comandos uno tras otro
[[email protected] ~]# yum install epel-release -y [[email protected] ~]# yum install python-pip -y [[email protected] ~]# pip install docker-compose
Nota: se recomienda pip versión 6.0 o superior para que docker-compose funcione sin problemas. En caso de que la versión de pip sea inferior a 6.0, ejecute el siguiente comando para actualizarlo
[[email protected] ~]# pip install --upgrade pip
Verifique la versión de Docker usando el siguiente comando
[[email protected] ~]# docker-compose --version docker-compose version 1.15.0, build e12f3b9 [[email protected] ~]#
Implementar contenedores con la herramienta Docker Compose
Para implementar contenedores docker con el comando docker-compose, primero cree un directorio debajo de ese directorio y cree un archivo de composición con el nombre ‘docker-compose.yml‘ o ‘docker-compose.yaml‘. En el archivo de redacción definiremos los servicios para nuestras aplicaciones e imágenes de contenedor.
Antes de comenzar a crear un archivo de redacción, primero extraigamos imágenes de contenedor de WordPress y MySQL
[[email protected] ~]# docker pull wordpress [[email protected] ~]# docker pull mysql [[email protected] ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c73c7527c03a 2 days ago 412MB wordpress latest f28808014819 7 days ago 406MB
Crea un directorio con el nombre “wordpress-sitio”
[[email protected] ~]# mkdir wordpress-site [[email protected] ~]# cd wordpress-site/ [[email protected] wordpress-site]#
Cree el archivo docker-compose.yml con el siguiente contenido
version: '3.0' services: webserver: image: wordpress container_name: wp_web ports: - 8080:80 links: - dbserver:mysql environment: WORDPRESS_DB_PASSWORD: 6zcznAEjLWp79P dbserver: image: mysql:latest container_name: wp_db environment: MYSQL_ROOT_PASSWORD: 6zcznAEjLWp79P
En el archivo de composición anterior, hemos definido dos servicios con el nombre «servidor web» y «servidor de base de datos», para estos servicios también he especificado la imagen del contenedor. Aparte de esto, he especificado entornos mencionando la contraseña de root de mysql y la contraseña de wordpress db.
Implementemos nuestra aplicación, es decir, el sitio de WordPress ejecutando el siguiente comando,
[[email protected] wordpress-site]# docker-compose up
Nota: Ejecute el comando ‘docker-compose up’ desde el directorio donde existe el archivo docker-compose.
El comando anterior implementará dos contenedores con el nombre «wp_web» y «wp_db». Intente acceder a su sitio de WordPress usando la URL:
http://{docker-host-ip}:8080
Complete las instrucciones de la pantalla para finalizar la instalación de WordPress. Esto confirma que hemos implementado con éxito el sitio de WordPress dentro de los contenedores utilizando la herramienta docker-compose.
Echemos un vistazo a las opciones del comando ‘docker-compose’
Enumere los contenedores que se implementan para nuestra aplicación
[[email protected] wordpress-site]# docker-compose ps Name Command State Ports ---------------------------------------------------------------------- wp_db docker-entrypoint.sh mysqld Up 3306/tcp wp_web docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp [[email protected] wordpress-site]#
Detener e iniciar los Contenedores y sus Servicios
Presione Ctrl+C en el comando o ejecute debajo del comando
[[email protected] wordpress-site]# docker-compose stop Stopping wp_web ... done Stopping wp_db ... done [[email protected] wordpress-site]#
Ejecute ‘docker-compose start’ para iniciar contenedores y sus servicios
[[email protected] wordpress-site]# docker-compose start Starting dbserver ... done Starting webserver ... done [[email protected] wordpress-site]#
Ver los registros de contenedores
Ejecute el comando ‘docker-compose logs’ para ver los registros de los contenedores y para ver los registros de un contenedor específico use el comando ‘docker-compose logs {service-name}’
[[email protected] wordpress-site]# docker-compose logs [[email protected] wordpress-site]# docker-compose logs dbserver
Stop & Remove Containers junto con su red
Con la ayuda del comando ‘docker-compose down’ podemos detener y eliminar contenedores desde un solo comando
[[email protected] wordpress-site]# docker-compose down Stopping wp_web ... done Stopping wp_db ... done Removing wp_web ... done Removing wp_db ... done Removing network wordpresssite_default [[email protected] wordpress-site]#
Eso es todo de este tutorial. Para obtener más opciones, consulte «docker-compose –help»