Docker Compose es una herramienta que le permite definir y administrar aplicaciones Docker de varios contenedores. Utiliza un archivo YAML para configurar los servicios, redes y volúmenes de la aplicación.
Componer se puede utilizar para diferentes propósitos. Las implementaciones de aplicaciones de host único, las pruebas automatizadas y el desarrollo local son los casos de uso más populares para Docker Compose.
En este tutorial, le mostraremos cómo instalar la última versión de Docker Compose en Ubuntu 18.04 y explorar los conceptos y comandos básicos de Docker Compose.
Las mismas instrucciones se aplican a Ubuntu 16.04 y cualquier otra distribución basada en Debian, incluidas Debian, Linux Mint y Elementary OS.
Requisitos previos #
Asegúrese de cumplir con los siguientes requisitos previos antes de continuar con este tutorial:
- Iniciar sesión como usuario con privilegios sudo.
- Instale Docker siguiendo las instrucciones de Cómo instalar y usar Docker en Ubuntu 18.04.
Instalar Docker Compose en Ubuntu #
El paquete de instalación de Docker Compose está disponible en los repositorios oficiales de Ubuntu 18.04, pero es posible que no siempre sea la última versión. El enfoque recomendado es instalar Docker Compose desde el repositorio GitHub de Docker.
Al momento de escribir este artículo, la última versión estable de Docker Compose es la versión 1.23.1
. Antes de descargar el binario de Compose, visite la página de lanzamiento del repositorio de Compose en GitHuband y verifique si hay una nueva versión disponible para descargar.
Para instalar Docker Compose en Ubuntu 18.04, siga estos pasos:
-
Descargue el binario Docker Compose en
/usr/local/bin
directorio con el siguientecurl
comando:sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
Una vez que se complete la descarga, aplique permisos ejecutables al binario Compose:
sudo chmod +x /usr/local/bin/docker-compose
-
Verifique la instalación ejecutando el siguiente comando que mostrará la versión de Compose:
docker-compose --version
La salida se verá así:
docker-compose version 1.23.1, build b02f1306
Primeros pasos con Docker Compose #
En esta sección, mostraremos cómo usar Docker Compose para configurar una aplicación de WordPress de varios contenedores en Ubuntu 18.04.
Comience por crear un directorio de proyecto y navegue hacia él:
mkdir my_app
cd my_app
Inicie su editor de texto y cree un archivo llamado docker-compose.yml
dentro del directorio del proyecto:
nano docker-compose.yml
Pegue el siguiente contenido:
docker-compose.ymlversion: '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:
Analicemos el código línea por línea.
En la primera línea, estamos especificando la versión del archivo Compose. Hay varias versiones diferentes del formato de archivo Compose con soporte para 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 docker-compose.
El db
servicio:
- Utiliza
mysql:5.7
imagen. Si la imagen no está presente en el sistema, se extraerá del repositorio público de Docker Hub. - Utiliza el reinicio
always
política que indicará al contenedor que siempre se reinicie. - Crea un volumen con nombre
db_data
para hacer que la base de datos sea persistente. - Define las variables de entorno para
mysql:5.7
imagen.
El wordpress
servicio:
- Utiliza
wordpress
imagen. Si la imagen no está presente en su sistema, Compose la extraerá del repositorio público de Docker Hub. - Utiliza el reinicio
always
política que indicará al contenedor que siempre se reinicie. - Monta el
wp_data
directorio en el host a/var/lib/mysql
dentro del contenedor. - Reenvía el puerto 80 expuesto en el contenedor al puerto 8080 en la máquina host.
- Define las variables de entorno para
wordpress
imagen. - El
depends_on
instrucción define la dependencia entre los dos servicios. En este ejemplo,db
se iniciará antes dewordpress
.
Desde el directorio del proyecto, inicie la aplicación de WordPress ejecutando el siguiente comando:
docker-compose up
La salida debería verse así:
...
wordpress_1 | [Sun Sep 23 22:31:43.499055 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
wordpress_1 | [Sun Sep 23 22:31:43.499796 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Compose extraerá ambas imágenes, iniciará dos contenedores y creará wp_data
directorio en el directorio de su proyecto.
Introduce http://0.0.0.0:8080/
en su navegador y verá la pantalla de instalación de Wordpress.
En este punto, la aplicación Wordpress está funcionando y puede comenzar a trabajar en su tema o complemento.
Para detener Redactar, presione CTRL+C
.
También puede iniciar Compose en un modo separado pasando -d
bandera.
docker-compose up -d
Para verificar los servicios en ejecución, use ps
opción:
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 separado para detener el uso de servicios:
docker-compose stop
Si desea eliminar los contenedores por completo, use down
opción:
docker-compose down
Pasando el --volumes
switch también eliminará los volúmenes de datos:
docker-compose down --volumes
Desinstalación de Docker Compose #
Si por alguna razón desea desinstalar Docker Compose, simplemente puede eliminar el binario escribiendo:
sudo rm /usr/local/bin/docker-compose