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.
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
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,
0 comentarios