Docker Compose
Compose es una herramienta de Docker para crear y ejecutar multiples contenedores de manera sencilla, para ello se utiliza un archivo llamado docker-compose.yml
que contiene todos los parámetros de configuración para crear los contenedores.
Los contenedores se crean con el comando:
docker-compose up -d
Los contenedores se manejas con los comandos:
docker-compose start # Iniciar los contenedores
docker-compose stop # Detener los contenedores
docker-compose down # Detener y eliminar los contenedores
El archivo docker-compose.yml
El archivo docker-compose.yml
se escribe en formato YAML y define el conjunto de reglas y parámetros para la creación de los contenedores. Las reglas mas importantes son las siguientes:
- version: define la versión de Compose a utilizar y depende de la versión del motor de Docker instalado, la versión estándar es la 3.
- services: los servicios se refieren a la configuración de los contenedores. Los parámetros disponibles se pueden encontrar en https://hub.docker.com/.
- volumes: los volúmenes son los directorios compartidos entre el host y el contenedor o entre contenedores. Permite definir los directorios públicos del contenedor.
- ports: permite exponer puestos y reglas de comunicación entre contenedores o entre el contenedor y el host.
Ejemplos
Servidor web con PHP
En el siguiente ejemplo creamos un archivo docker-compose.yml
que define un servicio llamado web, se utiliza la imagen de PHP 7.3 con apache, se expone el puerto 80 y finalmente se apunta la carpeta local www/ al directorio de publicación interno del contenedor.
version: '3'
services:
web:
image: php:7.3-apache
container-name: docker-php
ports:
- "80:80"
volumes:
- ./www:/var/www/html
Luego creamos una carpeta llamada www/ donde colocaremos los archivos php del proyecto, finalmente creamos el contenedor con el comando docker-compose up -d
.
Servidor web con PHP personalizado
Para este ejemplo, utilizamos un archivo Dockerfile
para crear una imagen a medida que contenga extensiones adicionales de PHP (mysql, pdo y pdo_mysql) y un módulo de Apache (rewrite).
FROM php:7.2-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN a2enmod rewrite
Luego creamos el archivo de docker-compose.yml
, a diferencia del ejemplo anterior utilizamos la regla build donde indicamos la ruta donde se encuentra el archivo Dockerfile
y container_name para asignar un nombre al contenedor.
version: '3'
services:
web:
build: .
container_name: docker-php
ports:
- "80:80"
volumes:
- ./www:/var/www/html
Para completar este artículo compartimos un repositorio llamado Docker: PHP con una instalación personalizada de PHP, donde hemos agregado la carpeta de publicación y una documentación básica.
Envíar Comentario
En este sitio los comentarios se publican previa aprobación del equipo de Kodetop. Evita los comentarios ofensivos, obscenos o publicitarios. Si deseas publicar código fuente puedes hacerlo entre las etiquedas
<pre></pre>