Introducción
Docker Compose es una herramienta que le permite definir y ejecutar aplicaciones Docker de múltiples contenedores.
Con Compose, usted define los servicios de la aplicación, las redes y los volúmenes en un solo archivo YAML, luego rota la aplicación con un solo comando.
Compose se puede utilizar para una variedad de propósitos, como implementaciones de aplicaciones de host único, pruebas automatizadas y desarrollo local.
Este tutorial lo guía para instalar la última versión de Docker Compose en CentOS 8. También cubriremos los conceptos y comandos básicos de Docker Compose.
Prerrequisitos
Asegúrese de cumplir con los siguientes requisitos previos antes de continuar con este tutorial:
- Inicie sesión como usuario con privilegios de sudo.
- Docker instalado en CentOS 8.
Si desea instalar Docker Compose en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conectarse al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Instalar Docker Compose en CentOS
El método recomendado para instalar Docker Compose en CentOS 8 es descargar el archivo binario Compose desde el repositorio GitHub de Docker.
En el momento de escribir este artículo, la última versión estable de Docker Compose es la versión 1.25.1
. Antes de descargar el binario de Compose, visite la página de lanzamiento del repositorio de Compose en GitHub y verifique si hay una nueva versión disponible para descargar.
Complete los siguientes pasos para instalar Docker Compose en CentOS 8:
Comience descargando el binario Compose Docker en el /usr/local/bin
usando el siguiente comando curl
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Una vez que se complete la descarga, haga que el binario sea ejecutable escribiendo:
sudo chmod +x /usr/local/bin/docker-compose
Para verificar la instalación, escriba el siguiente comando para imprimir la versión de Compose:
docker-compose --version
La salida se verá así:
docker-compose version 1.25.1, build a82fef07
Introducción a Docker Compose
En esta sección, le mostraremos cómo usar Docker Compose para ejecutar una pila de WordPress en su computadora CentOS 7.
Comience creando un nuevo directorio para el proyecto y navegue hasta él:
mkdir my_app && cd my_app
Luego, cree un archivo llamado docker-compose.yml
en el directorio del proyecto:
vi docker-compose.yml
Pega el siguiente contenido:
version: '3.3'
services:
db:
image: mysql:5.7
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
-./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
Repasemos el código línea por línea.
La primera línea especifica la versión del archivo de composición. Hay varias versiones del formato de archivo Compose compatibles con versiones específicas de Docker.
A continuación, estamos definiendo dos servicios db
y wordpress
. Cada servicio ejecuta una imagen y creará un contenedor separado cuando se ejecute la composición de la ventana acoplable.
El servicio db
- Utilice la
mysql:5.7
. Si la imagen no está presente en su sistema, Compose la extraerá del repositorio público de Docker Hub. - Utiliza la
always
que indica el reinicio automático del contenedor. - Cree un volumen llamado
db_data
para conservar la base de datos. - Defina las variables de entorno para la
mysql:5.7
.
El servicio de wordpress
- Utilice la imagen de
wordpress
Si la imagen no está presente en su sistema, Compose la extraerá del repositorio público de Docker Hub. - Utiliza la
always
que indica el reinicio automático del contenedor. - Monte el
wp_data
en el host dentro del contenedor/var/lib/mysql
- Reenvía el puerto 80 expuesto en el contenedor al puerto 8080 en la máquina host.
- Define las variables de entorno para la imagen de
wordpress
- La
depends_on
define la dependencia entre los dos servicios. En este ejemplo,db
iniciaráwordpress
primero.
Desde el directorio del proyecto, inicie la aplicación de WordPress usando el siguiente comando:
docker-compose up
La salida debería verse así:
...
wordpress_1 | [ 2020-01-17 22:36:07+00:00] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
wordpress_1 | [ 2020-01-17 22:36:07+00:00] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'...
Compose extrae ambas imágenes, inicia dos contenedores y crea el wp_data
en el directorio del proyecto.
Abra su navegador, escriba http://TUO_IP_O_DOMINIO:8080/
y verá la pantalla de instalación de Wordpress.
Para dejar de marcar, presione CTRL+C
Si desea comenzar a componer en modo independiente, use la -d
:
docker-compose up -d
Starting my_app_db_1... done
Starting my_app_wordpress_1... done
Para verificar los servicios en ejecución, use la opción ps
docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------
my_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
my_app_wordpress_1 docker-entrypoint.sh apach... Up 0.0.0.0:8080->80/tcp
Cuando Compose se ejecuta en modo independiente, para detener el servicio, escriba el siguiente comando:
docker-compose stop
Para eliminar completamente los contenedores, use la opción down
docker-compose down
El uso de la --volumes
también eliminará los volúmenes de datos:
docker-compose down --volumes
Desinstalar Docker Compose
Si desea desinstalar Docker Compose, simplemente elimine el archivo binario con el siguiente comando:
sudo rm /usr/local/bin/docker-compose
Conclusión
Aprendió a instalar y usar Docker Compose en CentOS 8.