10. Crear Archivo Docker Compose Parte 1 10. Crear Archivo Docker Compose Parte 1

 ¡Claro que sí! Continuemos con el siguiente paso crucial: la creación del archivo Docker Compose, parte fundamental de la orquestación de la aplicación.

🏗️ 10. Crear Archivo Docker Compose (Parte 1)

En esta parte, crearemos el archivo docker-compose.yml, que define y orquesta el servicio de PHP que acabamos de construir con el Dockerfile.


Paso 1: Corregir el Dockerfile y Preparar la Terminal

Antes de crear el archivo Compose, el contenido indica una corrección necesaria en el Dockerfile.

  1. Abre el archivo Dockerfile para aplicar la corrección (asegúrate de estar en el directorio ~/laravel):

    Bash
    nano Dockerfile
    
  2. Busca la línea donde se actualizan e instalan los paquetes y asegúrate de que esté correcto, agregando el guion a apt-get:

    Dockerfile
    # Antes: RUN apt get update && apt get install -y \
    # Después (Asegúrate de que 'apt-get' tenga el guion):
    RUN apt-get update && apt-get install -y \
    # ... resto de las líneas ...
    
  3. Guarda los cambios (Ctrl + O, Enter) y sal del editor (Ctrl + X).

  4. Obtén el ID de usuario (uid) de tu usuario actual para usarlo como argumento en el archivo Compose. (En este ejemplo es 1000):

    Bash
    echo $UID
    # Opcionalmente, 'id -u' también funciona.
    
  5. Crea el archivo docker-compose.yml:

    Bash
    nano docker-compose.yml
    

Paso 2: Contenido del Archivo docker-compose.yml (App Service)

A continuación, se muestra la configuración de la versión, los servicios y la red, enfocándose inicialmente en el servicio de la aplicación (app). Recuerda que la indentación con dos espacios es fundamental en los archivos YAML.

Archivo de Configuración de Docker Compose (Parte 1)
23 nov, 2:05

** (Referencia a Imagen 10. Crear Archivo Docker Compose Parte 1.png)

Explicación de la Configuración

  • version: "3": Especifica la sintaxis de la versión 3 de Docker Compose.

  • services: app: Define el contenedor principal de PHP FPM.

    • build: Le dice a Compose que no descargue una imagen preexistente, sino que la construya localmente usando el Dockerfile en el contexto actual (.).

    • args: Envía el usuario (udemy) y el ID (1000) a las variables ARG definidas en el Dockerfile.

    • image: laravel-app: Etiqueta la imagen construida con este nombre.

    • volumes: - ./:/var/www: Esta es la línea más importante para el desarrollo. Monta el directorio de tu proyecto local (./) dentro del contenedor (/var/www), permitiendo editar archivos en tu máquina local y ver los cambios inmediatamente en el contenedor.

    • networks: - laravel: Conecta el servicio a la red interna llamada laravel.

  • networks: laravel: driver: bridge: Define una red de tipo bridge. Esto es esencial porque permitirá que otros contenedores que agregaremos después (como Nginx y MySQL) se comuniquen con este contenedor app utilizando su nombre de servicio como un nombre de host.


Siguiente Paso: Ya tenemos la imagen base de PHP y el archivo Compose parcial. En el próximo paso, añadirás los servicios de Nginx y MySQL al archivo docker-compose.yml para completar el entorno de desarrollo.

¿Estás listo para continuar con la Parte 2 del archivo Docker Compose?


version: "3"
services:
  # Definición del servicio de la aplicación (PHP/Laravel)
  app:
    # Configuración de la construcción de la imagen
    build:
      # Pasa argumentos USER y UID al Dockerfile
      args:
        user: udemy
        uid: 1000
      # Contexto: buscar Dockerfile en el directorio actual
      context: .
      # Nombre del archivo Dockerfile
      dockerfile: Dockerfile

    # Nombre que se le dará a la imagen Docker resultante
    image: laravel-app
   
    # Política de reinicio: Reinicia a menos que se detenga explícitamente
    restart: unless-stopped
   
    # Directorio de trabajo dentro del contenedor (ya definido en Dockerfile)
    working_dir: /var/www
   
    # Volúmenes: Sincronizar el directorio actual de la máquina local (./)
    # con el directorio de trabajo del contenedor (/var/www).
    # Esto permite que los cambios de código sean visibles instantáneamente.
    volumes:
      - ./:/var/www
   
    # Conectar este servicio a la red "laravel"
    networks:
      - laravel

# Definición de la red Bridge
networks:
  laravel:
    driver: bridge

# NOTA: En la próxima parte, agregaremos los servicios 'nginx' y 'mysql'.

Comentarios

Entradas más populares de este blog

ejercicios-Crear Carpeta y Archivo de Texto en Ubuntu

Tutorial de Carpetas y Directorios en Ubuntu Linux

Instalar Docker en Ubuntu Server usando docker.io