My Blog

Laravel 5 y docker-compose

No comments

 

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

folder-structure-1

 

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/

 

 

adminLaravel 5 y docker-compose

Related Posts

docker-compose y el problema – Illegal instruction: 4

Docker es una herramienta fundamental para desarrolladores de aplicaciones web, por su flexibilidad y porque nos libera de los diversos lamp stacks que hay que poner en marcha sobre distintos sistemas operativos para correr nuestras apps y porque permite instalar varios contenedores y enlazarlos para ejecutar una sola aplicación, lo que nos permitiría probar nuestra

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *