Header Ads Widget

Ticker

6/recent/ticker-posts

Usando Laravel 8 con Docker y Docker-Compose

 En este tutorial, aprenderemos cómo podemos usar Docker y Compose para desarrollar y ejecutar aplicaciones de Laravel 8 localmente. Siguiendo este tutorial aprenderás:

  • ¿Qué es Docker y Docker-compose?
  • Cómo instalar Docker y Docker-Compose,
  • Cómo usar Docker para instalar y ejecutar aplicaciones de Laravel 8.

¿Qué es Docker?

Docker es una herramienta de contenedores que permite a los desarrolladores y organizaciones crear, ejecutar e implementar aplicaciones utilizando contenedores.

Los contenedores son imágenes independientes que permiten a los desarrolladores empaquetar aplicaciones con sus dependencias. Comparten el núcleo y los recursos del sistema donde se ejecutan y proporcionan entornos aislados para las aplicaciones.

Docker hace uso de Dockerfilearchivos para definir y describir las partes y dependencias utilizadas por una aplicación y también comandos para ejecutar para instalar las dependencias e iniciar la aplicación.

Instalación de Docker

Empiece por instalar Docker para su tipo de sistema operativo siguiendo una de estas guías oficiales:

¿Qué es Docker-Compose?

La documentación oficial describe docker-compose como:

Una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. Con Compose, usa un archivo YAML para configurar los servicios de su aplicación. Luego, con un solo comando, crea e inicia todos los servicios desde su configuración. Para obtener más información sobre todas las funciones de Compose, consulte la lista de funciones .

El uso de docker-compose implica tres sencillos pasos:

  1. Primero, debe definir / describir el entorno de su aplicación con un Dockerfilepara poder reproducirlo en cualquier lugar.

  2. En segundo lugar, debe crear un docker-compose.ymlarchivo y definir los servicios necesarios para ejecutar su aplicación para poder ejecutarlos en varios contenedores.

  3. Finalmente, solo necesita ejecutar docker-compose upy Compose iniciará todos los servicios para su aplicación

Creando un proyecto de Laravel 8

Creemos un proyecto de Laravel 8 y luego veamos cómo podemos dockerizarlo usando Docker.

Tenemos diferentes formas de crear proyectos de Laravel: usando Composer (administrador de paquetes PHP), clonando desde GitHub o descargando usando cURL.

Usando Composer

Si tiene Composer instalado en su sistema, simplemente puede usar el siguiente comando para crear un proyecto de Laravel:

composer create-project --prefer-dist laravel/laravel laravelproject

Usar el repositorio de GitHub

Alternativamente, si no desea instalar Composer en su sistema, también puede clonar Laravel desde GitHub usando:

git clone https://github.com/laravel/laravel.git laravelproject

'

Instalación de las dependencias del proyecto

Ahora, instalemos las dependencias del proyecto. Si tiene Composer instalado, simplemente ejecute el siguiente comando desde la carpeta raíz de su proyecto:

composer install 

Si no tiene Composer instalado en su sistema. También puede usar Docker con la imagen oficial del compositor para instalar dependencias ejecutando el siguiente comando desde la carpeta raíz del proyecto:

docker run --rm -v $(pwd):/app composer/composer install

El --rminterruptor le dice a Docker que limpie y retire automáticamente el contenedor después de realizar la tarea y salir.

Esto es lo que dice la documentación al respecto:

De forma predeterminada, el sistema de archivos de un contenedor persiste incluso después de que el contenedor sale. Esto hace que la depuración sea mucho más fácil (ya que puede inspeccionar el estado final) y conserva todos sus datos de forma predeterminada. Pero si está ejecutando procesos de primer plano a corto plazo , estos sistemas de archivos de contenedor realmente pueden acumularse. Si, en cambio, desea que Docker limpie automáticamente el contenedor y elimine el sistema de archivos cuando el contenedor salga , puede agregar la --rmmarca:

El comando: -v $(pwd):/appindica a Docker que monte el directorio actual en el sistema host recuperado con $(pwd)to /appen el contenedor. ¿Qué appSimplemente porque la herramienta de redacción del contenedor buscará un composer.jsonarchivo en esta carpeta.

Después de finalizar la instalación, de cualquier manera, encontrará una vendorcarpeta con todas las dependencias dentro de su proyecto Laravel.

Creando un Dockerfile

Ahora, después de instalar Docker y Docker-compose y crear el proyecto laravel, creemos un Dockerfilepara definir nuestro entorno. Cree un nuevo Dockerfilearchivo en el directorio de la aplicación y comience agregando el primer comando:

FROM php:7.2.2-fpm

Esto le dice a Docker que descargue y use la php:7.2.2-fpmimagen.

Siguiente agregar:

RUN apt-get update -y && apt-get install -y libmcrypt-dev openssl
RUN docker-php-ext-install pdo mcrypt mbstring

Esto se ejecuta apt-getpara instalar las dependencias y extensiones requeridas por Laravel.

Si desea instalar Composer, también puede agregar este comando:

RUN apt-get -y curl
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

Ahora, agregue:

WORKDIR /app
COPY . /app

Esto le dice a Docker que establezca el directorio de trabajo en el contenedor /appy copie los archivos (proyecto Laravel) en nuestra carpeta actual (en nuestro host del sistema) a la /appcarpeta en el contenedor.

Si no instaló las dependencias usando los métodos anteriores, puede instalarlas usando:

RUN composer install

Ahora, ejecutemos el artisan servecomando usando el CMDcomando:

CMD php artisan serve --host=0.0.0.0 --port=8000

Esto servirá al proyecto Laravel desde el puerto 8000.

Finalmente, debe exponer el puerto 8000del contenedor usando:

EXPOSE 8000

Este es el Dockerfile completo:

FROM php:7.2.2-fpm
RUN apt-get update -y && apt-get install -y libmcrypt-dev openssl
RUN docker-php-ext-install pdo mcrypt mbstring
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install pdo mcrypt mbstring
WORKDIR /app
COPY . /app
RUN composer install

CMD php artisan serve --host=0.0.0.0 --port=8000
EXPOSE 8000

Construyendo la imagen de Docker

Después de crear el Dockerfile, está listo para crear la imagen de Docker real. Desde su terminal, navegue hasta la carpeta raíz de su proyecto y ejecute:

docker build -t my-laravel-image .

Usando el -tinterruptor podemos especificar la etiqueta / nombre de la imagen de Docker. El punto significa que la carpeta actual se usará como contexto para la imagen que se va a construir. ¿Recuerda el COPYcomando en el Dockerfilesu carpeta de origen es esta carpeta para que podamos copiar los archivos de nuestro proyecto al sistema de archivos contenedor.

Ejecución de la imagen de Docker con Docker

Después de crear la imagen de Docker ( my-laravel-image), ahora puede ejecutarla usando:

docker run -p 8000:8000 my-laravel-image

Ahora puede acceder a su aplicación desde su navegador en http://localhost:8000.

Ejecución de la imagen de Docker con Docker-compose

Docker-compose es más útil para crear varios contenedores para la misma aplicación, pero también puede usarse para ejecutar una sola imagen de Docker. Entonces, primero, cree un docker-compose.ymlarchivo en la carpeta raíz de su proyecto y agregue el siguiente contenido:

web:
    image: my-laravel-image
    ports:
        - 8000:8000
    volumes:
        - ./:/app

Estamos definiendo un volumen mediante el ./:/var/wwwcual simplemente montamos nuestro directorio actual ./en el sistema host /appen el contenedor. Esto le permitirá trabajar en el código fuente en la carpeta de su proyecto y los cambios se reflejarán en el sistema de archivos contenedor (en nuestro caso /app) sin ejecutar ningún otro comando.

Conclusión

En este tutorial, hemos visto cómo usar Docker para crear un entorno de desarrollo con Laravel 8. Hemos visto cómo usar Docker y docker-compose para ejecutar nuestra aplicación Laravel 8 en un contenedor aislado.


Publicar un comentario

0 Comentarios