Partimos de la base que tenemos instalado y funcionando el siguiente software
1º .- Crea un directorio en tu home y ejecuta el siguiente comando
$ composer create-project laravel/laravel --prefer-dist ./
2º.- Añade laravel-docker.dev to /etc/hosts
$ sudo echo '120.0.0.1 laravel-docker.dev' >> /etc/hosts
3º.- crea un archivo dentro de la raiz del directorio del proyecto llamado docker-compose.yml
front: image: dydx/alpine-nginx-phpfpm ports: - "80:80" volumes: - .:/var/www - ./docker/nginx/sites-enabled:/etc/nginx/sites-enabled links: - mysql:mysql mysql: image: dydx/alpine-mariadb ports: - "3306:3306" volumes: - ./docker/db/data:/var/lib/mysql
4º .- Crea esta estructura de directorios
./docker ./docker/db ./docker/db/data ./docker/nginx ./docker/nginx/sites-enabled
Nota importante: el directorio docker/db/data debe ser escribible por cualquiera.
5.- Crea el archivo default dentro de sites-enables con el siguiente contenido
server { server_name laravel-docker.dev; root /var/www/public; index index.php; client_max_body_size 100M; fastcgi_read_timeout 1800; location / { try_files $uri $uri/ /index.php$query_string; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; access_log off; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } }
Ejecuta Docker compose up
Ahora desde la raiz del proyecto y dentro d ela consola docker ejecuta docker-compose up
para generar los contenedores. Espera la descarga de los contenedores .
Arreglando permisos
Los contenedores estan funcionando, pero los directorios de cache y logs no son escribibles, fatal error 500. 500 Internal server error
Para arreglarlo, usa el siguiente comando.
$ docker exec -it laravelmysqldocker_front_1 chmod 0777 /var/www/storage -R
Tambien se puede hacer localmente
$ chmod 0777 /var/www/storage -R
O dando permisos de escritura a todos si está en windows
Para ejecutar comandos de artisan
$ docker exec -it laravelmysqldocker_front_1 /bin/sh
Configuración MySQL
Puedes comprobar si MySQL/MariaDB esta ejecutandose haciendo login localmente en MySQL :
mysql -uhomestead -psecret homestead
Si quieres comprobar si mysql y laravel estan comunicandose lo más sencillo es
$ docker exec -it laravelmysqldocker_front_1 /bin/sh ## Ahora desde dentro del contenedor cd /var/www/ php artisan migrate
Parando los contenedores
Cuando hayas terminado , puedes parar los contenedores con
$ docker-compose stop
y para reiniciarlos
$ docker-compose up
Referencia obligada
El artículo original está en http://geshan.com.np/blog/2015/10/getting-started-with-laravel-mariadb-mysql-docker/
Deja una respuesta