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.
Comentários