Utilizando o Docker para seu projetos Laravel com Laradock


O laradock é um ambiente de desenvolvimento PHP completo para o docker, contendo algumas imagem docker pré-configuradas. Inicialmente o projeto foi focado em rodar os projetos Laravel no docker, mas veio evoluindo e agora começou a suportar outros projetos PHP como Symfony, CodeIgniter, WordPress, Drupal e outros.

Neste post vamos deixar-lo pronto para utilizar um projeto docker. Primeiramente para que possamos dar seguimento precisamos ter o docker e Git instalado e funcionando na máquina.

O primeiro passo agora é baixar o repositório do laradock no github com o seguinte comando:

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

Esse comando baixará o conteúdo para uma pasta chamada laradock. O próximo passo é criar um arquivo .env espelhado pelo env-exemple (Copiando o env-exemple e colando com o nome de .env).

Realizado o passo anterior vamos subir o serviço com o seguinte comando:

$ docker-compose up -d nginx

Quando subimos o nginx automaticamente o PHP sobe pois o servidor web necessita dele.

Pronto o serviço está funcionando e agora podemos testar acessando:

http://localhost

ou no caso de quem estiver usando docker no  OSx acessando:

http://192.168.99.100

Antes de prosseguirmos é importante vermos um pouco sobre algumas configurações no arquivo .env. Algumas mais importantes são:

NGINX_HOST_HTTP_PORT=Porta que vai rodar
NGINX_HOST_HTTPS_PORT=Porta SSL

Existem outras configurações e possibilidades, mas não serão abordadas neste post. Agora vamos rodar uma arquivo teste de php para vermos se vai rodar e qual procedimento devemos tomar para funcionar.

O que vamos fazer primeiramente é criar uma pasta no mesmo nível que a pasta laradock, como mostra a imagem abaixo.

 

 

 

 

Agora que criamos as pasta vamos criar um arquivo chamado index.php dentro da pasta app/ com o seguinte conteúdo:

<!--?php
 
echo 'Teste laradock';
</pre-->

 

Depois de salvo o arquivo vamos abrir o arquivo default.conf que fica dentro da pasta laradock/nginx/sites/. Altere a linha  root /var/www/app;

Salve o arquivo e volte para a pasta laradock/ e digite os seguintes comando:

$ docker-compose down
 
$ docker-compose up

Pronto podemos testar acessando  http://localhost ou http://192.168.99.100 e verificando que funcionou corretamente.

Agora temos o laradock funcionando corretamente, e o próximo passo é criar/instalar um projeto Laravel.

Primeiramente vamos entrar no diretório do laradock com os seguintes comandos:

$ cd laradock/

Depois vamos subir o container workspace digitando o seguinte comando:

$ docker-compose exec workspace bash

Você notará que o terminal irá mudar, você entrará dentro do container. Algo parecido com o texto logo abaixo:

root@f74b81f6ed26:/var/www#

Se nos rodarmos o comando ls veremos que estamos um diretório anterior do laradock/ dentro desse container, ou seja, instalaremos o projeto Laravel no mesmo nível que o laradock.

Bem para instalarmos um projeto Laravel vamos rodar o seguinte comando:

# composer create-project --prefer-dist laravel/laravel teste-app-laravel

Pronto, depois que o composer baixa e instala temos uma pasta chamada teste-app-laravel/ no mesmo nível que o laradock.

Vamos sair do container utilizando Ctrl + q + p simultaneamente e partir para a criação do virtual host para acessa-lo. Crie um novo arquivo chamado teste-app-laravel.conf no seguinte diretório:

server {
 
    listen 80;
    listen [::]:80;
 
    server_name teste-app-laravel.local;
    root /var/www/teste-app-laravel/public;
    index index.php;
 
    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }
 
    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Nessas linhas o que devemos atentar é nas linhas server_name e root, onde o primeiro é o nome do virtual host e o segundo é o caminho de onde está a aplicação Laravel. 

Com o terminal dentro da pasta laradock/ rode o seguinte comando:

$ docker-compose restart

Bem, e por último, vamos adicionar no virtualhost de nosso OS a configuração para que possamos acessar a aplicação através da url: teste-app-laravel.local em um navegador localmente. Para que funcione vamos abrir o arquivo de virtualhost /etc/hosts e adicionar a seguinte linha:

127.0.0.1 teste-app-laravel.local

Salve e feche o arquivo e pronto, feito isso temos nosso projeto Laravel funcionando corretamente.

Criando Virtual Host no MAMP MAC

Para utilizar o Virtual Host no MAMP, e necessário realizar alguns procedimentos simples. Primeiramente  temos que acessar o arquivo hosts, com os seguintes comandos:

1
2
MacBook-Pro-de-bytes:~ byteslivres$   cd /etc
MacBook-Pro-de-bytes:etc byteslivres$ sudo nano hosts

Acrescente  a linha:

1
127.0.0.1 projeto1.local

Salve o arquivo clicando control + x e depois  aperte return, para sair do arquivo basta clicar control + x

Depois de feito isso, acesse o arquivo /Applications/MAMP/conf/apache/httpd.conf
e encontre a linha:

1
2
# Virtual Hosts 
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

remova o “jogo da velha”, para que fique dessa maneira:

1
2
# Virtual Hosts
  Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Salve o arquivo.  Depois de feito isso acesse o arquivo: /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf, neste arquivo tera algo parecido com isso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
   <VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
    </VirtualHost>
 
    <VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
    </VirtualHost>

substitua estas linhas por estas:

1
2
3
4
5
6
7
8
9
10
 
<VirtualHost *:80>
    DocumentRoot /Applications/MAMP/htdocs
    ServerName localhost
</VirtualHost>
 
<VirtualHost *:80>
    DocumentRoot /Users/username/Sites/projeto
    ServerName projeto1.local
</VirtualHost>

depois de alterado salve o arquivo e de um Stop e Start no MAMP. Pronto agora basta você acessar
pelo seu navegador com o seguinte link: http://projeto1.local

Gerenciando dependências com o Composer

Gerenciador de Composer
Gerenciador de Dependência

Neste post não vou abordar o que é o Composer, mais sim como instalar e utilizar ele no seu projeto para gerenciar suas dependências.

Primeiro passo é instalar o Composer, existe algumas formas de instalar o mesmo, qualquer dúvida só acessar o site do projeto aqui.

 

NO LINUX

No meu caso utilizei o comando abaixo para instalar o Composer:

1
php -r "readfile('https://getcomposer.org/installer');" | php

Será realizado o download do arquivo composer.phar.

1
2
3
4
5
All settings correct for using Composer
Downloading...
 
Composer successfully installed to: ./composer.phar
Use it: php composer.phar

No meu caso eu instalei ele para que eu pudesse utiliza-lo em qualquer projeto, numa forma global. Para isso utilizei esse comando (Para plataforma UNIX):

1
# sudo mv composer.phar /usr/local/bin/composer

Pronto o composer agora está instalado.

NO OS X

Para instalar no OS X é mais simples, basta fazer o download do Composer :

1
curl -sS https://getcomposer.org/installer | php

depois de realizado o download, mova o arquivo para a pasta /usr/bin com o seguinte comando:

1
sudo mv composer.phar /usr/bin/

No meu caso gosto de deixar no modo universal, para poder trabalhar com o composer em qualquer projeto, para isto basta criar um alias, utilizando o VIM para acessar o arquivo e inserir uma linha.
Para acessar o arquivo digite o seguinte comando:

1
vim ~/.bash_profile

Depois acrescente a seguinte linha:

1
alias composer="php /usr/bin/composer.phar"

Pronto agora o composer está  instalado.

Caso o procedimento acima não funcionar utilize este comando:

1
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Este último comando realiza todo o processo dito anteriormente.

UTILIZANDO

Para utiliza-lo basta criar um arquivo composer.json no seu projeto contendo quais dependências você deseja utilizar, no nosso exemplo utilizei o silex e o doctrine :

1
2
3
4
5
6
7
{
    "require": {
        "silex/silex": "1.0.*",
        "doctrine/dbal": "2.2.*"
    },
    "minimum-stability": "dev"
}

Para baixar as dependencias acesse pelo terminal a pasta de seu projeto e execute o seguinte comando:

1
composer install

Pronto agora basta esperar terminar de baixar os pacotes e utiliza-los.