Como excluir servicios con Docker Compose ?

El comando docker-compose up inicia todos los servicios de nuestro proyecto. Incluso servicios que no deseamos como herramientas ( drush, por ejemplo ) o servicios de mantenimiento esporadicos ( docker-compose run --rm ). Entonces como podemos evitar que ciertos servicios se inicien con docker-compose up ?

Existe una opcion en nuestro archivo de configuracion docker-compose.yml con la cual podemos indicar que algun(nos) servicios no esten disponibles al levantar nuestro proyecto.

Profiles en Docker Compose

Cuando declaramos un servicio dentro de nuestro archivo docker-compose.yml podemos establecer la opcion profiles y establecer a que perfiles de ejecucion pertenecera ese servicio.

version: '2'

services:
node:
image : node:14
volumes:
- .:/var/www/html
command: "npm start"

db:
image: mysql:5.7
volumes:
- ./mysql:/etc/mysql/conf.d/
- ./db_init.sql:/docker-entrypoint-initdb.d/init.sql

puppeteer:
profiles: ["puppeteer"]
build: ./puppeteer/
volumes:
- ./puppeteer/:/var/www/html/
- ./config:/var/www/html/config
command: "npm start"

En este archivo de configuracion, estamos asignando al perfil puppeteer al servicio puppeteer. Por lo tanto cuando ejecutemos el comando:

docker-compose up -d

Solo se iniciaran los servicios node y db, excluyendo el servicio puppeteer.

Si quisieramos ejecutar el servicio puppeteer debemos indicar el nombre del servicio

docker-compose run --rm puppeteer npm start

Add new comment