
Docker es una plataforma de creación de contenedores que le permite crear, probar e implementar rápidamente aplicaciones como contenedores portátiles y autosuficientes que pueden ejecutarse prácticamente en cualquier lugar.
Docker Compose es una herramienta que le permite definir y orquestar aplicaciones Docker de múltiples contenedores. Utiliza un archivo YAML para configurar los contenedores, las redes y los volúmenes de la aplicación.
Componer se puede utilizar para diversos fines. 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.
Este tutorial explica cómo instalar la última versión de Docker Compose en Debian 10, Buster. También exploraremos los conceptos y comandos básicos de Docker Compose.
Requisitos previos #
Antes de continuar, asegúrese de cumplir con los siguientes requisitos previos:
- Iniciar sesión como usuario con privilegios sudo.
- Tiene Docker instalado en su máquina Debian 10.
Instalando Docker Compose en Debian 10 #
El paquete de instalación de Docker Compose está disponible en los repositorios oficiales de Debian 10, 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.
Utilice los siguientes pasos para instalar la última versión de Docker Compose en Debian 10:
-
Descargue el binario Docker Compose en
/usr/local/bin
directorio conwget
ocurl
: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
-
Usa
chmod
para hacer el ejecutable binario de Compose:sudo chmod +x /usr/local/bin/docker-compose
-
Para verificar la instalación, use el siguiente comando que imprime 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 configurar un entorno de desarrollo de WordPress local con Docker Compose.
Cree un directorio para el proyecto y navegue hasta él:
mkdir wordpress_app && cd wordpress_app
Abra su editor de texto y cree un archivo llamado docker-compose.yml
:
nano docker-compose.yml
Pegue el siguiente contenido:
docker-compose.ymlversion: '3.7'
services:
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
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:
Expliquemos el código línea por línea
La primera línea especifica 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 crea un contenedor separado cuando se ejecuta Docker Compose.
El db
servicio:
- La imagen está configurada en
mysql:8.0
imagen. Si la imagen no está presente, Compose la extraerá del repositorio público de Docker Hub. La línea que comienza concommand
anula el comando predeterminado. - El
restart: always
la política indica a Compose que reinicie el contenedor si se cae. - El contenedor usará un volumen con nombre
db_data
para conservar la base de datos. - Define las variables de entorno para
mysql:8.0
imagen.
El wordpress
servicio:
- Utiliza
wordpress
imagen. - Monta el
wp_data
directorio en el host a/var/lib/mysql
dentro del contenedor. - Reenvía el puerto expuesto
80
en el contenedor al puerto8080
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 pila de WordPress ejecutando el siguiente comando:
docker-compose up
La salida debería verse así:
...
] /usr/sbin/mysqld: ready for connections. Version: '8.0.18' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
db_1_99946702ac7e | 2019-12-15T21:37:29.109255Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
...
Docker Compose extraerá las imágenes, iniciará los 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 estándar de WordPress.
En este punto, la aplicación de WordPress está funcionando y puede comenzar a trabajar en ella.
Para detener Redactar, presione CTRL+C
.
También puede iniciar Compose en un modo separado usando -d
opción:
docker-compose up -d
Para ver los contenedores docker en ejecución, use el siguiente comando:
docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------
wordpress_app_db_1_99946702ac7e docker-entrypoint.sh --def ... Up 3306/tcp, 33060/tcp
wordpress_app_wordpress_1_a428d8408817 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Para detener los servicios cuando Compose se está ejecutando en modo separado, use:
docker-compose stop
Si desea eliminar los contenedores por completo, use down
opción:
docker-compose down
Pasando el --volumes
cambie también elimine los volúmenes de datos:
docker-compose down --volumes
Desinstalación de Docker Compose #
Si necesita desinstalar Docker Compose, simplemente puede eliminar el binario escribiendo:
sudo rm /usr/local/bin/docker-compose