Image
Docker e Drupal

Sempre que vou desenvolver uma feature nova para um cliente, a primeira coisa que faço é buscar na drupal.org alguma solução já desenvolvida pela comunidade. Se isso já é uma rotina comum de quem trabalha com projetos Drupal, porque não encontrar soluções já desenvolvidas e homologadas pela comunidade para trabalhar em seu ambiente local.

Nosso velho LAMP de cada dia

Um 'drupaleiro' iniciante que se preze sempre começa com a tríade mais conhecida LAMP, XAMP, WAMP, etc. Porém acabamos esbarrando naquele problema de cliente com versões diferentes de PHP, servidores usam Apache e outro NGINX, um MariaDB outro PostgreSQL. 

Docker resolvendo nossas dores de cabeça

Pensando nisso o Docker surgiu em nossa vida para facilitar nosso dia a dia nesses monte de conflitos entre várias aplicações.

Será que preciso aprender a construir Dockerfiles, construir containers, fazer rotas para conseguir montar um ambiente local?

Não, pois alguém já fez isso para nós! E é aí que entra o Docker4Drupal

Como a descrição dele já mesmo diz, o Docker4Drupal é um suite de images docker otimizadas para Drupal. Ele utiliza o docker-composer para instânciar aplicações completas para Linux, Mac OS X ou Windows. A stack de containers foi criada pela empresa Wodby que também é sua principal mantenedora.

Requisitos do Docker4Drupal

Antes de iniciarmos nosso setup do ambiente local, precisamos primeiro instalar algumas coisas que são base para o funcionamento do Docker4Drupal:

Subindo um ambiente local com Drupal no Docker4Drupal

Para subir um Drupal padrão (que será nosso exemplo inicial) vamos seguir os seguintes passos:

Clone o repositório do https://github.com/wodby/docker4drupal ou faça o download da versão mais estável.

Observação: Se você for utilizar o Drupal 9, pode ignorar este passo, mas caso queira utilizar o Drupal 8 ou 7, abra o arquivo .env e edite as variáveis DRUPAL_TAGNGINX_VHOST_PRESET.

### --- VANILLA DRUPAL ----

DRUPAL_TAG=9-4.20.1
#DRUPAL_TAG=8-4.20.1
#DRUPAL_TAG=7-4.20.1

### --- NGINX ----

NGINX_TAG=1.19-5.10.0
#NGINX_TAG=1.18-5.10.0

NGINX_VHOST_PRESET=drupal9
#NGINX_VHOST_PRESET=drupal8
#NGINX_VHOST_PRESET=drupal7
#NGINX_VHOST_PRESET=drupal6

Ainda no arquivo .env você irá editar a variável PROJECT_BASE_URL PROJECT_NAME com a URL que você deseja utilizar em seu localhost e um nome para o seu projeto respectivamente.

### PROJECT SETTINGS

PROJECT_NAME=my_drupal9_project
PROJECT_BASE_URL=drupal.docker.localhost

Feito isso, agora rode o comando abaixo para iniciar os containers: 

# Iniciar os containers
docker-compose up -d

Após executar este comando, o docker fará todo o processo de pull (download) das imagens, criação dos containers, mapeamento das rotas pra você.

Se não houve nenhum erro, ao final do processo basta acessar a URL que você configurou na variável logo acima com a porta, que no caso será a 8000 por default.

Por exemplo, se você manter a variável default no PROJECT_BASE_URL a URL será http://drupal.docker.localhost:8000/

Apareceu uma tela de instalação do Drupal? Sucesso!!!

Basta agora você instalar o Drupal usando os seguintes valores padrão para a configuração do banco de dados:

DB_NAME=drupal
DB_USER=drupal
DB_PASSWORD=drupal
DB_ROOT_PASSWORD=password
DB_HOST=mariadb
DB_PORT=3306
DB_DRIVER=mysql

Após finalizar a instalação já teremos nosso Drupal operando!

Drupal 9 instalação concluída
Exibição da tela inicial do Drupal após concluir a instalação.

 

E o Docker4Drupal não para por aí, além de uma boa documentação https://wodby.com/docs/1.0/stacks/drupal/ ele também possui integração pronta com vários tipo de containers, desde sistemas de cache (Varnish, Memcached), de busca (Solr, Elasticsearch), serviços de mail (Mailhog, OpenSMTPD), Node.js, Redis, PostgreSQL e por aí vai. São muitas possibilidades criação de infraestruturas completas localmente sem necesssitar carregar sua máquina com várias versões diferentes de diversas aplicações.

Até mesmo uma simples mudança de versão de uma aplicação (por exemplo altera a versão do PHP) é feita alterando somente uma linha no arquivo .env.

Referências:

Últimos posts

13 Aug 2020 | By bdiasti

Guia para resolver problemas em Drupal :)

Quando estamos iniciando em determinada tecnologia ficamos meio perdidos em como vamos resolver determinado problema, por exemplo seu gerente pediu pra você criar um ranking das pessoas que mais contribuíram este mês com a comunidade Drupal, e ai como você começaria a resolução deste problema em Drupal?