Instalación Laravel con Docker

por - julio 16, 2020

Instalación Laravel con Docker

Instalación Laravel con Docker
En esta ocasión realizaremos la instalación de nuestra aplicación hecha con el Framework Laravel y con el gestor de contenedores Docker. Cabe destacar que está ejecución funciona perfectamente para Linux, puede que para otros Sistemas Operativos como Windows y MacOS se tenga que añadir otros pasos.

Para lograr este objetivo necesitamos lo siguiente:
  • Tener instalador Docker en el sistema.
  • Descargar composer.phar en su última versión estable. Aquí el enlace.
  • Recomendación usar Visual Studio Code.
  • Pueden tener o no instalado PHP en su computador.

Estructura de carpetas y archivos

Se van a dirigir a la carpeta donde tendrán el proyecto, puede ser cualquiera, incluso en los Documentos del sistema. Allí dentro crearán las carpetas docker y php, siendo esta última dentro de la carpeta docker. Y en la raiz de la carpeta pegarán el archivo composer.phar  y dentro de la carpeta php se crearán un archivo llamado Dockerfile (archivo de texto plano sin extensión). Debe quedar distribuido  de la siguiente manera:


Manos a la obra

Lo primero que vamos a hacer es editar el archivo Dockerfile con lo siguiente:


# Indicar la imagen base
FROM php:7.4-fpm

# Archivo Autor / Mantenimiento
LABEL maintainer="Mi Nombre<micorreo@correo>"

# Comandos a ejecutar al iniciar el contenedor
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip \
autoconf \
pkg-config \
libssl-dev

# Instalar todos los idiomas en el sistema
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y locales locales-all
RUN sed -i 's/# es_CO.UTF-8 UTF-8/es_CO.UTF-8 UTF-8/' /etc/locale.gen \
&& locale-gen

# Dependiendo de su base de datos deben instalar las extensiones necesarias

# PHP extensiones necesarios para laravel
RUN docker-php-ext-install mbstring exif pcntl bcmath gd

# Limpiar cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Agregar usuario para aplicación Laravel
RUN groupadd -g 1001 www
RUN useradd -u 1001 -ms /bin/bash -g www www

# Para que el contenedor inicie con este usuario
USER www

# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]

Lo guardamos y ahora accedemos desde nuestra terminal a la carpeta php. Con Visual Studio Code podemos darle clic derecho a la carpeta e indicar que abra la terminal.

Como abrir el terminal desde directorio que deseo

Una vez allí, vamos a construir nuestra imagen Docker php-laravel, que básicamente tendremos todas las instalación escritas en el Dockerfile. Aquí debemos ejecutar:

docker build -t php-laravel .

Este paso puede durar bastante dependiendo de la velocidad del internet y de la capacidad de procesamiento de tu computador.

Luego nos vamos a dirigir a la raiz de nuestro proyecto. Pueden escribir esto en el terminal para llevarlo dos pasos atrás de la carpeta actual:

cd ../../

En este punto crearemos nuestro proyecto con Laravel, y lo haremos de la siguiente manera:

docker run --rm -it -v "$(pwd)":/app -w /app php-laravel php composer.phar create-project --prefer-dist laravel/laravel laravel_mongo

Este contenedor que se ejecutará solo mientras crea el proyecto, despues de esto es eliminado. Cabe destacar que con "$(pwd)" estamos diciendo que compartimos nuestra raíz al proyecto y para crear el proyecto usamos el método de creación con composer, haciendo uso en este caso el archivo composer.phar.

En este ejercicio nuestro proyecto se llama laravel_mongo por lo tanto esa carpeta se tuvo que haber creado en nuestra raíz.

Ahora cada vez que quieran ejecutar su proyecto deben escribir está linea en su terminal (Es largo, pero pueden agregar alias a su shell, lo que sería como un acceso directo pero con sintaxis más corta al comando completo):

docker run --rm -it -v "$(pwd)"/laravel_mongo:/app/laravel_mongo -w /app/laravel_mongo -p 80:8080 php-laravel php artisan serve --port=8080 --host=0.0.0.0

Ahora vamos al navegador, y podemos abrir con la url http://localhost y deben ver lo siguiente

Laravel iniciado con valores por defecto

Para detener el servicio, basta con ir al terminal y con la combinación de teclas Ctrl+c podrán finalizar la ejecución de Laravel.

Todo esto se puede mejorar si colocamos nuestro proyecto en un nginx o apache, incluso aquí la instalación se hizo con php-fpm, que es super recomendado para mejorar la eficiencia y nos permite desacoplar php del servidor web. Además esta instalación también falta los paquetes necesarios para que php se conecte a la base de datos de su preferencia, pero eso se los dejo de tarea.

Sin más me despido en esta ocasión, espero les aporte mucho valor, agradecería sus comentarios de como les fue con esta Instalación Laravel con Docker,

También te puede interesar

0 comentarios

ToTop