Volver a la página principal
martes 5 noviembre 2024
32

Cómo usar build en Docker Compose

El comando build en Docker Compose permite construir (o reconstruir) las imágenes Docker especificadas en un archivo docker-compose.yml. Esto es útil cuando tienes servicios definidos en Docker Compose que requieren una imagen personalizada a partir de un Dockerfile o configuraciones específicas de construcción.

Uso de build en Docker Compose

Para utilizar build en Docker Compose, es necesario especificar la opción build dentro de la definición de un servicio en el archivo docker-compose.yml. Esto indicará a Docker Compose que construya una imagen en lugar de descargarla de un repositorio.

Estructura básica en docker-compose.yml

Un ejemplo básico de configuración con build en un archivo docker-compose.yml es el siguiente:

version: '3'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:80"
  database:
    image: postgres:13

Opciones de build

Opción Descripción
context Directorio donde Docker Compose buscará el Dockerfile.
dockerfile Nombre del archivo Dockerfile (por defecto es Dockerfile).
args Permite pasar variables de construcción (build arguments) al Dockerfile.
cache_from Especifica imágenes para usar como caché durante el proceso de construcción.
target Objetivo de la construcción en un Dockerfile con múltiples etapas (multi-stage build).

Ejemplos de uso de build en Docker Compose

1. Construir una imagen con el Dockerfile en el directorio actual:

version: '3'
   services:
     app:
       build:
         context: .
       ports:
         - "3000:3000"

Aquí, Docker Compose construirá la imagen para el servicio app usando el Dockerfile que esté en el mismo directorio que el archivo docker-compose.yml.

2. Especificar un archivo Dockerfile personalizado:

Si deseas usar un archivo Dockerfile con otro nombre (por ejemplo, Dockerfile.dev):

version: '3'
   services:
     app:
       build:
         context: .
         dockerfile: Dockerfile.dev
       ports:
         - "3000:3000"

3. Pasar variables de construcción (build arguments):

Puedes definir variables de construcción para parametrizar la imagen desde el archivo Docker Compose. Por ejemplo:

version: '3'
   services:
     app:
       build:
         context: .
         args:
           APP_ENV: development
       ports:
         - "3000:3000"

En este caso, la variable APP_ENV estará disponible como un ARG en el Dockerfile y se podrá utilizar durante la construcción de la imagen.

4. Ejecutar un objetivo específico en una construcción multi-stage:

Si tu Dockerfile contiene múltiples etapas, puedes especificar el objetivo de construcción con target:

version: '3'
   services:
     app:
       build:
         context: .
         target: production
       ports:
         - "3000:3000"

Esto construirá solo hasta la etapa production en un Dockerfile multi-stage.

Ejecutar docker-compose build

Para construir las imágenes definidas en docker-compose.yml, usa el siguiente comando:

docker-compose build

Esto construirá todas las imágenes especificadas en el archivo de configuración. También puedes construir un servicio específico:

docker-compose build <nombre_servicio>

Consideraciones de uso

  • Después de construir, puedes iniciar los contenedores con docker-compose up.
  • Para reconstruir imágenes sin usar caché, puedes agregar el parámetro --no-cache:
docker-compose build --no-cache

Referencia oficial

Para más detalles sobre build en Docker Compose, consulta la documentación oficial de Docker Compose.

Etiquetas:
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer