Laradock é um ambiente de desenvolvimento web completo para Docker, que nasceu para atender o desenvolvimento de sistemas Laravel e atualmente provê containers para diversas situações para o desenvolvimento com PHP.

Ele oferece suporte a uma variedade de serviços comuns, todos pré-configurados para fornecer um ambiente de desenvolvimento de PHP, Laravel, WordPress, Joomla, Drupal, CakePHP, dentre outros, e totalmente pronto.

Neste artigo introdutório você terá uma visão geral do projeto, as características e recursos do Laradock, e uma explanação de configuração rápida. Para aprofundar no uso e configurações leia os tutoriais acessíveis pelo menu da seção.

O que é o Laradock

Laradock é um projeto open source criado para facilitar a configuração de conteineres Docker para serem usados em ambientes de desenvolvimento e produção para projetos de sistemas desenvolvidos em PHP e frameworks como Laravel e Symphony.

Uma série de recursos e serviços estão disponçiveis, com instalação e copnfiguração por meio de arquivos .env que permitem configurar os conteineres Docker de acordo com a necessidade de seus projetos.

Recursos do Laradock

  • Escolha fácil entre as versões do PHP: 8.0, 7.4, 7.3, 7.2, 7.1, 5.6, 5.3 … (e acima)
  • Escolha simples do mecanismo de banco de dados: MySQL, Postgres, MariaDB, MongoDB, dentre outros
  • Execução de sua própria stack: Memcached, HHVM, RabbitMQ …
  • Cada software é executado em seu próprio contêiner: PHP-FPM, NGINX, PHP-CLI …
  • Fácil de personalizar qualquer contêiner, com edições simples no arquivo de configuração Dockerfile.
  • Todas as imagens estendem de uma imagem base oficial - Imagens base confiáveis.
  • NGINX pré-configurado para hospedar qualquer código em seu diretório raiz.
  • Possibilidade de usar o Laradock por projeto ou um Laradock único para todos os projetos.
  • Fácil de instalar / remover software em Containers usando variáveis de ambiente.
  • Arquivos de configuração Dockerfiles limpos e bem estruturados.
  • A versão mais recente do arquivo Docker Compose (docker-compose).
  • Configuração transparente, visível e editável.
  • Construções rápidas de imagens.

Configuração rápida do Laradock para PHP Laravel

Visão geral rápida de como é simples configurar nossa stack de desenvolvimento PHP, NGINX, MySQL, Redis e Composer para executar um projeto Laravel:

1 - Clone o Laradock dentro do seu projeto PHP:

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

2 - Acesse a pasta laradock e renomeie o arquivo.env.example para .env.

cd laradock
cp .env.example .env

3 - Execute seus contêineres:

docker-compose up -d nginx mysql phpmyadmin redis workspace 

4 - Abra o arquivo .env do seu projeto Laravel e defina o seguinte:

DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd

5 - Abra seu navegador e visite localhost: http://localhost.

É isso, seu ambiente está configurado e executando um servidor Mysql com PHP, NGinx e Redis.

Você pode escolher quais ferramentas instalar em seu contêiner de espaço de trabalho e outros contêineres, a partir do arquivo .env.

Se você modificar o arquivo docker-compose.yml, .env ou qualquer arquivo dockerfile, deverá reconstruir seus contêineres para que as alterações tenham efeito na instância em execução.

Serviços, bibliotecas e pacotes suportados pelo Laradock

O Laradock segue o princípio de “separação de interesses” (separation of concerns), portanto, executa cada software em seu próprio Docker Container.

Você pode ligar/desligar quantas instâncias quiser sem se preocupar com as configurações.

Para executar um contêiner escolhido na lista abaixo, rode o seguinte comando:

docker-compose up -d {container-name} 

O nome do contêiner {nome-do-contêiner} é igual ao nome da pasta so serviço/software que deseja subir no container.

Por exemplo, para executar o contêiner “PHP FPM”, use o nome “php-fpm”.

A seguir a lista de softwares e serviços suportados na época que este artigo foi escrito:

Servidores web

  • NGINX
  • Apache2
  • Caddy

Balanceadores de carga

  • HAProxy
  • Traefik

Compiladores PHP

  • PHP FPM
  • HHVM

Sistemas de Gerenciamento de Banco de Dados

  • MySQL
  • PostgreSQL
  • PostGIS
  • MariaDB
  • Percona
  • MSSQL
  • MongoDB
    • MongoDB Web UI
  • Neo4j
  • CouchDB
  • RethinkDB
  • Cassandra

Aplicativos de gerenciamento de banco de dados (clientes)

  • PhpMyAdmin
  • Administrador
  • PgAdmin

Mecanismos de cache

  • Redis
    • Redis Web UI
    • Cluster Redis
  • Memcached
  • Aerospike
  • Verniz

Message brokers (Gerenciadores de mensagens)

  • RabbitMQ
    • RabbitMQ Admin Console
  • Beanstalkd
    • Beanstalkd Admin Console
  • Eclipse Mosquitto
  • PHP Worker
  • Laravel Horizon
  • Gearman
  • Amazon Simple Queue Service

Servidores de e-mail

  • Mailu
  • MailCatcher
  • Mailhog
  • MailDev

Gerenciamento de Log

  • GrayLog

Testes

  • Selenium

Monitoramento

  • Grafana
  • NetData

Mecanismos de pesquisa

  • ElasticSearch
  • Apache Solr
  • Manticore Search

IDE’s

  • ICE Coder
  • Theia
  • Web IDE

Diversos

  • Workspace - Espaço de trabalho (contêiner Laradock que inclui um rico conjunto de ferramentas úteis pré-configuradas)
    • PHP CLI
    • Compositor
    • Git
    • Vim
    • xDebug
    • Linuxbrew
    • Node
    • V8JS
    • Gulp
    • SQLite
    • Laravel Envoy
    • Deployer
    • Yarn
    • SOAP
    • Drush
    • WordPress CLI
  • Apache ZooKeeper: serviço centralizado para sistemas distribuídos em um armazenamento de valor-chave hierárquico
  • Kibana: visualize os dados do Elasticsearch e navegue no Elastic Stack
  • Dejavu: edite seus dados do Elasticsearch
  • LogStash: canal de processamento de dados do lado do servidor que recebe e processa dados de uma infinidade de fontes simultaneamente
  • Jenkins: servidor de automação, que fornece plug-ins para apoiar a construção, implantação e automatização de qualquer projeto
  • Certbot: habilita HTTPS automaticamente em seu site
  • Swoole: framework de programação assíncrona de nível de produção com corotinas, paralelismo, para PHP
  • SonarQube: inspeção contínua da qualidade do código para realizar revisões automáticas com análise estática do código para detectar bugs e muito mais
  • Gitlab: um único aplicativo para todo o ciclo de vida de desenvolvimento de software
  • PostGIS: extensor de banco de dados para PostgreSQL. Adiciona suporte para objetos geográficos, permitindo que consultas de localização sejam executadas em SQL
  • Blackfire: possibilita todos os desenvolvedores de PHP e TI / Ops para verificar e melhorar continuamente o desempenho de seus aplicativos
  • Laravel Echo: o poder dos WebSockets nos seus aplicativos Laravel
  • Mercure: Server-side eventos
  • Phalcon: framework PHP baseada no padrão model-view-controller
  • Minio: servidor de armazenamento em nuvem lançado sob Apache License v2, compatível com Amazon S3
  • AWS EB CLI: CLI que ajuda a implantar e gerenciar seus aplicativos e ambientes AWS Elastic Beanstalk
  • Thumbor: serviço de miniaturas de fotos
  • IPython: fornece uma arquitetura rica para computação interativa
  • Jupyter Hub: notebook Jupyter para vários usuários
  • Portainer: construa e gerencie seus ambientes Docker com facilidade
  • Docker Registry: a implementação do Docker Registry para armazenar e distribuir imagens Docker
  • Docker Web UI: uma solução baseada em navegador para navegar e modificar um registro privado do Docker

Considerações finais

O projeto é open-source, e caso você não encontre a configuração de um software que você deseja ver no Laradock, é bem vindo para contribuir com uma melhoria.

Continue a sequência de tutoriais pelo artigo que detalha a Instalação e Configuração do Laradock.