Skip to content

Instantly share code, notes, and snippets.

@ijaureguialzo
Last active April 29, 2024 17:45
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save ijaureguialzo/bf10504c742b44122ba62bfafe772c1c to your computer and use it in GitHub Desktop.
Save ijaureguialzo/bf10504c742b44122ba62bfafe772c1c to your computer and use it in GitHub Desktop.
Crear un proyecto Laravel usando solo Docker

Laravel con Docker

Crear la carpeta para alojar los proyectos

Linux y macOS

mkdir laravel; cd laravel

Windows

mkdir laravel & cd laravel

En Windows, usar CMD.EXE para lanzar los comandos, no PowerShell.

Estructura de carpetas

Una vez completados todos los pasos, la estructura quedará así:

.
└── laravel
    ├── app
    └── laradock

Descargar Laradock

  1. Clonar el repositorio:

    git clone https://github.com/Laradock/laradock.git
    

    Para que funcione, tiene que estar instalado el cliente de línea de comandos de Git.

  2. Copiar el fichero .env.example a .env:

    Linux y macOS

    cd laradock && cp .env.example .env && cd ..
    

    Windows

    cd laradock & copy .env.example .env & cd ..
    
  3. Editar el fichero .env de la carpeta laradock:

    • Modificar la ruta de la aplicación para que apunte a la carpeta laradock poniendo APP_CODE_PATH_HOST=../app
    • Si disponemos de más de una instalación de Laradock, modificar la variable COMPOSE_PROJECT_NAME y asignarle un nombre único para que los contenedores tengan nombres diferentes.
    • Seleccionar la versión de PHP: PHP_VERSION=8.2
    • Modificar el driver de base de datos de phpMyAdmin: PMA_DB_ENGINE=mariadb

Nuevo proyecto de Laravel

Generar el proyecto

⚠️ En estos comandos, si se ha renombrado app, cambiar solo la última ocurrencia, después de laravel/laravel.

Linux y macOS

docker run -it --rm --name php-cli \
    -v "$PWD:/usr/src/app" thecodingmachine/php:8.2-v4-slim-cli \
    composer create-project --prefer-dist laravel/laravel app

Windows

docker run -it --rm --name php-cli ^
    -v "%CD%:/usr/src/app" thecodingmachine/php:8.2-v4-slim-cli ^
    composer create-project --prefer-dist laravel/laravel app

(Re)arrancar los contenedores

Los comandos de docker-compose se lanzan en la carpeta laradock.

Arrancar los contenedores necesarios:

docker compose up -d nginx mariadb phpmyadmin workspace

Y para reiniciar un contenedor concreto:

docker compose restart nginx

Crear la base de datos

  1. Acceder a phpMyAdmin

    • Servidor mariadb y usuario root/root.
    • Crear la base de datos app y el usuario app/app.
  2. Editar el .env de la aplicación

    DB_CONNECTION=mysql
    DB_HOST=mariadb
    DB_PORT=3306
    DB_DATABASE=app
    DB_USERNAME=app
    DB_PASSWORD=app
    

Acceder al sitio web

Página principal: http://localhost

Captura-de-pantalla-2020-11-15-a-las-11-21-17

Si en Windows da un error de permiso denegado, entrar al workspace (ver siguiente sección) y lanzar el comando: chown -R laradock:laradock /var/www.

Utilidades

Lanzar comandos en el proyecto (composer, artisan, npm...)

docker compose exec workspace /bin/bash

Y después el comando que necesitemos. Por ejemplo:

php artisan tinker

o

php artisan make:model Tarea -mcr

Consola de MariaDB

docker compose exec mariadb mysql -u root -proot

Añadir soporte para fechas en castellano

Editar el fichero .env de laradock y activar la opción PHP_FPM_INSTALL_ADDITIONAL_LOCALES=true.

En la variable PHP_FPM_ADDITIONAL_LOCALES escribir la lista de idiomas adicionales, como por ejemplo es_ES.UTF-8 para castellano.

@BorjaAB
Copy link

BorjaAB commented Nov 12, 2020

Hola, vengo con un nuevo problema. Lo he hecho todo al pie de la letra pero me a aparecido esto al meterme en la página web del proyecto.
Captura (2)
¿Alguna idea?

@ijaureguialzo
Copy link
Author

ijaureguialzo commented Nov 12, 2020

Ok, creo que el problema pueden ser los espacios en el nombre de la carpeta, ¿puedes probar con este comando? Le he añadido "" alrededor de la ruta para que lo tome todo de una pieza:

docker run -it --rm --name php-cli ^
    -v composer_cache:/home/docker/.composer/cache ^
    -v "%CD%:/usr/src/app" thecodingmachine/php:7.3-v2-slim-cli ^
    composer create-project --prefer-dist laravel/laravel app

Lánzalo en la carpeta original, la que tenía espacios.

@BorjaAB
Copy link

BorjaAB commented Nov 12, 2020

No entiendo mucho de esto, ¿si lo lanzo otra vez sobre la carpeta pasara algo? o ¿tengo que borrar todo y volverlo a hacer? PD: me da igual empezar de nuevo.

@ijaureguialzo
Copy link
Author

Ese comando crea una nueva aplicación en el subdirectorio app. No tengo un Windows para probar y si puedes, haz la prueba en un directorio vacío cuyo nombre tenga espacios en la ruta, solo por ver si hace el proceso y es por eso por lo que te fallaba la primera vez. Así puedo actualizar el gist.

Gracias!

@BorjaAB
Copy link

BorjaAB commented Nov 12, 2020

Ok la estoy probando en este directorio "D:\borja\prueba ijaureguialzo" como ves tiene un espacio, espero a que se termine para mostrarte la salida.

@BorjaAB
Copy link

BorjaAB commented Nov 12, 2020

Hola, he terminado de hacerlo todo y me sale el mismo error que en la imagen anterior.
Captura

@ijaureguialzo
Copy link
Author

OK, mañana lo pruebo en una máquina Windows y miro a ver qué puede ser.

@BorjaAB
Copy link

BorjaAB commented Nov 13, 2020

Ok, ya me contarás.

@ijaureguialzo
Copy link
Author

Buenas, he revisado las instrucciones (algún comando de Windows no estaba bien) y solucionado el tema de permisos.
Tienes que lanzar el comando chown -R laradock:laradock /var/www en el workspace para que deje de dar el error de acceso denegado.

@BorjaAB
Copy link

BorjaAB commented Nov 16, 2020

Ok, gracias lo probare en cuanto pueda.

@BorjaAB
Copy link

BorjaAB commented Nov 16, 2020

Ok, lo he probado todo y funciona correctamente muchas gracias.

@BorjaAB
Copy link

BorjaAB commented Dec 27, 2020

Hola, vuelvo a tener otro problema, al intentar crear un proyecto nuevo me sale este error.
image
He probado desinstalando Docker Desktop y volviéndolo a instalar, ejecutar el cmd con permisos de amdinistrador, ejecutar Docker Desktop con permisos de administrador y todo me falla. Por el directorio se que no es porque esta hace poco si me dejaba crear proyectos, si pudieses solucionármelo te lo agradecería. Muchas gracias. Estoy en windows 10, laradock lo uso en otro ordenador y no me da fallo.

@wiredlain
Copy link

Hola, vuelvo a tener otro problema, al intentar crear un proyecto nuevo me sale este error.
image
He probado desinstalando Docker Desktop y volviéndolo a instalar, ejecutar el cmd con permisos de amdinistrador, ejecutar Docker Desktop con permisos de administrador y todo me falla. Por el directorio se que no es porque esta hace poco si me dejaba crear proyectos, si pudieses solucionármelo te lo agradecería. Muchas gracias. Estoy en windows 10, laradock lo uso en otro ordenador y no me da fallo.

quita la linea del caché

docker run -it --rm --name php-cli \
    -v "$PWD:/usr/src/app" thecodingmachine/php:7.4-v3-slim-cli \
    composer create-project --prefer-dist laravel/laravel app

@wiredlain
Copy link

@ijaureguialzo OMG!!!

C:\laravel\laradock>docker-compose exec workspace /bin/bash
root@faa5815a4fa9:/var/www# php artisan tinker
Could not open input file: artisan
root@faa5815a4fa9:/var/www#

despues de eso, debes ingresar a la carpeta de tu proyecto, segun esta guía es app

cd app

@ijaureguialzo
Copy link
Author

Gracias @wiredlain, ya está actualizado el tema de la caché.

Para lanzar los comandos, justo antes ya está explicado lo de cambiar a la carpeta app.

@Josuemart555
Copy link

Josuemart555 commented Aug 25, 2021

y si quisiera hacer lo con MySQL, estoy tratando pero me da error de que noa tiene acceso el usuario que coloco

@ijaureguialzo
Copy link
Author

y si quisiera hacer lo con MySQL, estoy tratando pero me da error de que noa tiene acceso el usuario que coloco

El usuario será el que tengas configurado en las variables de entorno DB_USERNAME y DB_PASSWORD.

@Josuemart555
Copy link

Josuemart555 commented Aug 27, 2021

y si quisiera hacer lo con MySQL, estoy tratando pero me da error de que noa tiene acceso el usuario que coloco

El usuario será el que tengas configurado en las variables de entorno DB_USERNAME y DB_PASSWORD.

este es mi archivo .env de laradock

MYSQL

MYSQL_VERSION=latest
MYSQL_DATABASE=name_database
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

funcionaria de esta manera ? yo lo intente y me dio error

@Josuemart555
Copy link

Necesito ayuda para acceder a mi db mysql

image

@ijaureguialzo
Copy link
Author

He revisado y actualizado el gist y he hecho la prueba con mysql en vez de mariadb; todo funciona correctamente.

Intenta acceder desde phpMyAdmin o prueba sin contraseña a ver, tal vez la primera vez que has lanzado el contenedor la configuración era otra.

Como último recurso, borra el contenedor de mysql y su volumen de datos asociado, para que se reconstruya nuevo al arrancar.

@Alex-OpenMimb
Copy link

hi everybody
follow the stetp, but have this error
[1045] Access denied for user 'micole_dev'@'172.18.0.6' (using password: YES) (SQL: select ( select count(id) from school ) as schools, (select count(id) from lead_message) as contacts, (select sum(total) from school_view) as views, (select round(sum(total) * 0.6) from school_view) as users)

what is the cause? how to solve them?

thank

@Alex-OpenMimb
Copy link

hi,
create other projecto to test, but mariadb. the service of mariadb is down, what maybe the cuase?
docker

@ijaureguialzo
Copy link
Author

Hello @Alex-OpenMimb, I've just simplified and updated the gist to newer versions of PHP and Laravel. I think the error you get is because of the outdated mariadb I was using.

@Alex-OpenMimb
Copy link

Hola@Alex-OpenMimb, acabo de simplificar y actualizar la esencia a versiones más nuevas de PHP y Laravel. Creo que el error que obtienes se debe al mariadb desactualizado que estaba usando.

Hi, change the mariadb version to 10.4.27, but doesn´t work, ti´s down mariadb.

@ijaureguialzo
Copy link
Author

Did you delete and redo everything? Also, could you post the log of the container output?

@Alex-OpenMimb
Copy link

image
have the error

@ijaureguialzo
Copy link
Author

That's the image's security analysis, not the running container's log.

To see what the container is trying to do, click on it in the containers tab on the left. You should get something like this:
Captura de pantalla 2023-03-21 a las 15 57 09

If the box icon on the top is green, the container is running. Otherwise may be failing to start and in the log should be clues about what's going on.

@Alex-OpenMimb
Copy link

Thank you

@Alex-OpenMimb
Copy link

How can I configurate two data base in laradock ? Is posiblle?

@ijaureguialzo
Copy link
Author

You should be able to create more databases in phpMyAdmin, just access http://localhost:8081/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment