9. Crear Archivo Dockerfile
Crear Archivo Dockerfile
Este tutorial explica cómo crear el Dockerfile para definir el entorno de la aplicación Laravel. El Dockerfile especifica la imagen base de PHP, instala las dependencias necesarias de Laravel y configura los permisos del usuario para el contenedor.
Paso 1: Crear el Directorio de Trabajo
Primero, crea un directorio para tu proyecto Laravel y navega dentro de él.
Verifica tu directorio actual (debería ser la ruta home de tu usuario, ej.
/home/udemy):BashpwdCrea el directorio del proyecto y entra en él:
Bashmkdir laravel cd laravelCrea el archivo Dockerfile usando el editor
nano:Bashnano Dockerfile** (Referencia a Imagen 9-1)
Paso 2: Contenido del Dockerfile para PHP
El siguiente código YAML (basado en la Imagen 9. 2) define el proceso de construcción de la imagen de PHP para Laravel.
# Se utiliza la imagen oficial de PHP versión 7.4 con FPM (FastCGI Process Manager)
FROM php:7.4-fpm
# Definición de argumentos que se pasarán durante la construcción
ARG user
ARG uid
# ----------------- Instalación de Dependencias -----------------
# Actualizar lista de paquetes e instalar dependencias esenciales para Laravel
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# Limpiar el caché de apt-get para reducir el tamaño final de la imagen
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# ----------------- Instalación de Extensiones PHP -----------------
# Instalar extensiones de PHP requeridas por Laravel, incluyendo el driver MySQL
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# ----------------- Instalación de Composer -----------------
# Copiar el binario de Composer (la última versión) desde su propia imagen de Docker
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# ----------------- Configuración de Usuario -----------------
# Crear un nuevo usuario y agregarlo a los grupos 'www-data' y 'root'
# Se utiliza el UID y el nombre de usuario pasados como argumentos
RUN useradd -G www-data,root -u $uid -d /home/$user $user
# Crear un directorio para Composer y cambiar su propietario al usuario recién creado
RUN mkdir -p /home/$user/.composer && \
chown -R $user:$user /home/$user
# ----------------- Configuración Final -----------------
# Especificar el directorio de trabajo donde residirá el proyecto
WORKDIR /var/www
# Cambiar el usuario por defecto a nuestro usuario
USER $user
** (Referencia a Imagen 9. 2)
Explicación de las Directivas Clave
FROM php:7.4-fpm: Define la imagen base. Usamos FPM porque es el protocolo que usará Nginx (o Apache) para comunicarse con PHP.ARG useryARG uid: Permite que el nombre y el ID del usuario de tu máquina local sean inyectados en el contenedor. Esto asegura que los archivos creados por el contenedor tengan los permisos correctos en tu sistema de archivos local, resolviendo problemas de permisos comunes.RUN apt-get install ...: Instala dependencias comogit,curl, y librerías (libonig-dev,libxml2-dev, etc.) que son necesarias para que PHP pueda procesar imágenes, cadenas de caracteres y otras funciones que Laravel requiere.RUN docker-php-ext-install pdo_mysql ...: Instala las extensiones de PHP necesarias, destacandopdo_mysqlpara la conexión a la base de datos que se usará.COPY --from=composer:latest ...: Una técnica eficiente para instalar Composer, copiando el binario directamente desde una imagen de Docker dedicada.RUN useradd ...: Crea el usuario dentro del contenedor con el mismo ID ($uid) de tu usuario local.WORKDIR /var/www: Establece el directorio de trabajo por defecto. Es aquí donde se montará el código fuente de Laravel.USER $user: Cambia el usuario predeterminado derootal usuario creado, ejecutando el proceso FPM con menos privilegios.
Siguiente Paso: Este Dockerfile define el servicio de PHP. Ahora se debe crear el archivo docker-compose.yml para definir y orquestar el servicio de PHP junto con el servidor web (Nginx) y la base de datos (MySQL).
¿Quieres que te muestre cómo crear el archivo docker-compose.yml?
Comentarios
Publicar un comentario