Como instalar e configurar o Laradock, que é, como apresentado no artigo introdutório, um projeto para configuração rápida e simples de ambientes de desenvolvimento de sistemas PHP para web, usando Docker.

Neste artigo tutorial, veremos mais detalhadamente como instalar e configurar um ambiente Laradock para trabalhar por projeto PHP, isto é, uma instalação para cada projeto. Ou como usar uma instalação para múltiplos projetos.

Ainda é mostrado como configurar instalações para executar diferentes versões do PHP para múltiplos projetos.

Tutoriais Laradock:

Laradock introdução
– Laradock, instalação e configuração – este artigo
Conexão de bancos de dados em projeto Laravel com Laradock

Requisitos

Os aplicativos e requisitos para instalar, configurar e executar um ambiente Laradock são:

Instalando Laradock para múltiplos projetos

Esta instalação é destinada a configurar uma instalação do Laradock para que múltiplos projetos possam utilizar a mesma configuração dos contêiners.

Clonar o repositório do Laradoc

  1. Clone o repositório do Laradock em qualquer lugar de sua máquina – eu aconselho a clonar na pasta onde mantém seus projetos, no mesmo nível deles:
$ cd my-workspace
$ git clone https://github.com/laradock/laradock.git

A estrutura de suas pastas deve ficar parecida com a seguinte:

- my-workspace
  - laradock
  - projeto-a
  - projeto-b
    ...
  - demais-projetos

Editar o arquivo de ambiente

2. Edite o arquivo de configuração de seu ambiente Docker Laradock. Copie o arquivo .env.example para .env

$ cd laradock
$ cp .env.example .env

3. Abra o arquivo .env e certifique-se de que a variável APP_CODE_PATH_HOST, no início do arquivo, está apontando para o caminho de path anterior:

APP_CODE_PATH_HOST=../

Esta configuração define o caminho das suas aplicações na máquina local, isto significa que estão em um nível anterior de pasta em relação à pasta do Laradock. Por isso você deve fazer o clone como explicado no passo 1.

4. Configure o arquivo .env com as demais definições que deseja para esta instalação. Como servidor web a utilizar e extensões do interpretador php-fpm e workspace.

Configurar os caminhos dos sites / projetos

5. Navegue nas pastas da sua instalação Laradock, onde cada subdiretório corresponde contém arquivos de configuração ou Dockerfiles do aplicativo correspondente ao nome da pasta.

Vá para o servidor web que escolheu utilizar: Apache ou NGinx, e crie arquivos de configuração para apontar para diferentes diretórios de projetos da sua máquina que deseja servir com a instalação do Laradock:

Para Nginx vá para nginx/sites, para Apache2 apache2/sites.

O Laradock por padrão inclui alguns arquivos de amostra para você copiar app.conf.example, laravel.conf.example e symfony.conf.example.

6. Altere os nomes padrão *.conf:

Você pode renomear os arquivos de configuração, pastas de projeto e domínios como desejar, apenas certifique-se de que a raiz nos arquivos de configuração esteja apontando para o nome da pasta de projeto correto.

6.1. Por exemplo: você irá utilizar Apache2 e o nome de uma das aplicações é clientes e está sendo desenvolvido em Laravel:

6.1.1. acesse a pasta apache2/sites da instalação Laradock

6.1.2. copie o arquivo sample.conf.example para clientes.conf

6.1.3. altere o conteúdo da configuração no novo arquivo:

<VirtualHost *:80>
  ServerName clientes.test
  DocumentRoot /var/www/clientes/public/
  Options Indexes FollowSymLinks

  <Directory "/var/www/clientes/public/">
    AllowOverride All
    <IfVersion < 2.4>
      Allow from all
    </IfVersion>
    <IfVersion >= 2.4>
      Require all granted
    </IfVersion>
  </Directory>

</VirtualHost>

Veja como definimos o DocumentRoot e Directory baseados na configuração de arquivos rais de nosso Apache para a instalação Laradock, e apontamos para o subdiretório public pois é uma aplicação Laravel que deve ter seu ponto de acesso neste diretório e não no raiz da aplicação.

7. Adicione os domínios aos arquivos de hosts.

No arquivo hosts de sua máquina, configure o ip de localhost para apontar para cada projeto configurado em seus arquivos *.conf do servidor web na instalação Laradock.

127.0.0.1  clientes.test
127.0.0.1  outro_projeto.localhost
...

Note que você pode usar extensões para o domínio local como: .localhost.invalid.test, or .example. Mas não pode utilizar a extensão .dev.

Leia Extensões de domínio para usar em desenvolvimento local para compreender por quê.

Continue na seção Usando o Laradock.

Usando o Laradock

Antes de começar a usar sua recente instalação do Laradock, fique atento ao seguinte:

  • Se você estiver usando o Docker Toolbox (VM), aconselho usar o Laradock v.4, para isso, atualize para Docker Native para Mac/Windows (recomendado). Se necessário, confira na documentação como atualizar o Laradock.
  • Recomendo usar de uma versão do Docker mais recente que 1.13.
  • Se você usou uma versão mais antiga do Laradock, é altamente recomendável reconstruir os contêineres que você precisa. Veja como reconstruir um contêiner na documentação.

Configurar o arquivo de ambiente .env

Após a instalação e configuração base você deve compreender como configurar seu ambiente e os passos para subir os contêineres Docker no dia a dia.

  1. Se ainda não fez, copie o arquivo .env.example para .env e configure as instalações que deseja para os seus serviços Docker, bem como a versão do PHP.
$ cd laradock
$ cp .env.example .env

Edite o arquivo .env para escolher qual software deseja instalar em seu ambiente. Você sempre pode consultar o arquivo docker-compose.yml para ver como essas variáveis estão sendo usadas.

Dependendo do sistema operacional do host, pode ser necessário alterar o valor fornecido para COMPOSE_FILE. Quando você está executando o Laradock no Mac OS, o separador de arquivo correto a ser usado é :. Ao executar o Laradock a partir de um ambiente Windows, vários arquivos devem ser separados com ;.

Por padrão, os contêineres que serão criados têm o nome do diretório atual como sufixo (por exemplo, laradock_workspace_1).

Isso pode causar “mistura de dados” dentro dos volumes do contêiner se você usar o laradock em vários projetos. Para evitar isso altere a variável COMPOSE_PROJECT_NAME para algo único, como o nome do seu projeto.

Eu mantenho o valor laradock mesmo para todos os meus projetos em uma instalação compartilhada de Laradock.

# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have separate containers per project.
COMPOSE_PROJECT_NAME=laradock

Isto por quê não utilizo sobreposição de caminhos ou nome de databases nos bancos de dados. Outro motivo para usar o mesmo nome neste caso é o de compartilhar contêineres de serviço, como o mysql, entre versões diferentes de php-fpm.

Iniciar os contêineres Docker

2. Crie o ambiente e execute-o usando docker-compose

Neste exemplo, veremos como executar NGINX (servidor da web), MySQL (mecanismo de banco de dados) para hospedar scripts da Web em PHP e REDIS (banco de dados em memória para cache):

$ docker-compose up -d nginx mysql redis

Deseja trabalhar com APACHE (servidor web), MONGODB (mecanismo de banco de dados não relacional) e REDIS ?

$ docker-compose up -d apache mongodb redis

Nota: Todos os contêineres de servidores web nginx, apache ..etc dependem do php-fpm, o que significa que se você executar qualquer um deles, eles irão iniciar automaticamente o contêiner php-fpm. Desta forma não é necessário chamar explicitamente no comando up o php-fpm.

Se você tiver que fazer isso, pode ser necessário executá-los da seguinte maneira:

$ docker-compose up -d nginx php-fpm mysql

Você pode selecionar sua própria combinação de containers existentes, listados aqui.

Atenção: nem sempre esta lista está atualizada, portanto, verifique o arquivo docker-compose.yml para conferir a listagem completa de todos os contêineres disponíveis.

Executando composer e php artisan

3. Entre no container do Workspace, onde poderá executar comandos como: Artisan, Composer, PHPUnit, Gulp, Node, Npm, etc.

$ docker-compose exec workspace bash

Como alternativa, para usuários do Windows PowerShell: execute o seguinte comando para acessar o terminal de qualquer contêiner em execução:

$ docker exec -it {workspace-container-id} bash

Oriento você a acessar os contêineres com o usuário padrão, laradock, a fim de que os arquivos criados tenham o nível de permissão adequado. Se acessar sem definir o usuário, root é usado.

Logicamente, se necessitar acessar um contêiner com acesso privilegiado, não informe o usuário.

Para acessar como laradock, adicione --user = laradock. Exemplo:

$ docker-compose exec --user=laradock workspace bash

Configure o seu projeto

4. Atualize a configuração do seu projeto para usar o servidor do banco de dados, o serviço Redis, e outros que instalou e subiu.

Abra o arquivo .env do seu projeto PHP ou qualquer arquivo de configuração que seu projeto usa, e defina o host do banco de dados DB_HOST como mysql.

Você precisa usar as credenciais de banco de dados padrão do Laradock, que podem ser encontradas no arquivo .env (ex: MYSQL_USER =). Ou você pode alterá-los e reconstruir o contêiner.

Um exemplo de .env de um projeto Laravel configurado para acessar Mysql de um contêiner Laradock:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=meubd
DB_USERNAME=default
DB_PASSWORD=secret

Acesse seu projeto

5. Acesse seu projeto em seu navegador, visite o endereço de seu host local de acordo com a configuração de site que você definiu.

No exemplo deste artigo o caminho do projeto no navegador seria http://clientes.test.

A seguir veja como configurar algumas das opções o .env

Configurações do arquivo .env

Algumas configurações que valem a penas ser mencionadas e devem ser verificadas por você, ajustadas se necessário, no arquivo de ambiente.

Note que as configurações específicas para habilitar ou não o uso de cada aplicação deve ser realizado para que você possa usar seus contêineres.

Por exemplo, para habilitar o uso do XDEBUG no Workspace, deve ir até a seção WORKSPACE e alterar a variável WORKSPACE_INSTALL_XDEBUG para true.

O mesmo vale para extensões que devem estar disponíveis para o PHP-CLI no WORKSPACE.

Para habilitar as extensões no PHP-FPM, navegue até a sua seção e habilite as extensões que deseja para o contêiner do PHP-FPM.

APP_CODE_PATH_HOST

Ela define o caminho do código do seu(s) aplicativo(s) em seu host (sua máquina e não o contêiner).

Você deverá alterar ela de acordo com a estratégia de instalação do Laradock, veja as seções anteriores para entender que valores utilizar.

A lista está organizada em ordem alfabética, porém as variáveis estão dispostas em ordem diferente no arquivo .env.

DATA_PATH_HOST

Define o caminho de armazenamento em sua máquina.

Para todos os sistemas de armazenamento. Isto significa que os arquivos bancos de dados, caches, e outros arquivos de uso nos aplicativos instalados em seus contêineres serão armazenados neste path.

As aplicações usarão seus subdiretórios a partir desta configuração, por padrão ela é ~/.laradock/data. Isto é, a partir de sua pasta /home/seuusuario/ é criado o diretório oculto para configurações e dados.

Caso esteja utilizando a estratégia de uma instalação Laradock por versão PHP, ou mesmo uma instalação por projeto, pode manter a mesma configuração de caminho de dados para todas as instalações. Desta maneira poderá compartilhar arquivos de banco de dados e outros.

COMPOSE_PROJECT_NAME

Define o prefixo dos nomes dos contêineres. Isso é útil se você tiver vários projetos que usam Laradock para ter contêineres separados por projeto. Ou mesmo se usa uma instalação por versão PHP.

PHP_INTERPRETER

O interepretador PHP que deseja usar, podendo ser hhvm ou php-fm. Confesso que somente utilizei o php-fpm.

PHP_VERSION

Define a versão PHP do espaço de trabalho (workspace) e contêineres PHP-FPM (não se aplica a HHVM).

Para cada instalação Laradock, quando usando uma por versão, você pode configurar uma versão diferente para o PHP, porém manter a mesma versão para, por exemplo, o sistema gerenciador de banco de dados MySQL.

Esta estratégia permite subir contêineres em versões PHP diferentes porém que compartilham os mesmos contêineres para os demais aplicativos. Esta é a beleza do Docker.

Mantenha-se atualizado

Não esqueça de me seguir no Twitter e assinar o Canal Mazer.dev no Youtube para receber atualizações de novos artigos, vídeo aulas e cursos gratuitos em desenvolvimento e engenharia de software.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *