jessie-drupal cria uma imagem para contêiner Docker com Drupal 8, Apache e PHP sobre o Debian 8
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
conf
docs
site
.editorconfig
.gitignore
Dockerfile
README.md
install-or-run-drupal8
opcache-segment.ini
run-drupal8
settings.php-fragment
test-mail.php

README.md

jessie-drupal

jessie-drupal cria uma imagem para contêiner Docker com Drupal 8, WebServer Apache e PHP 5.6 sobre o Debian 8

Este projeto foi testado com a versão 1.8.2 do Docker

Reiniciando o Boot2Docker

boot2docker stop
boot2docker start

Fazendo o Build

docker build -t parana/jessie-drupal . 

Verificando

docker images | grep drupal

Para executar:

docker run -d --name mysql_db -p 9306:3306 parana/mysql
docker run --name mydrupal \
       --link mysql_db:mysql \
       -d -p 80:80 \
       parana/jessie-drupal
open http://dockerhost.local
# Opcionalmente podemos entrar numa seção Bash 
# do contêiner mysql_db
docker exec -i-t mysql_db /bin/bash

Váriáveis de ambiente:

MYSQL_DATABASE
MYSQL_USER
MYSQL_PASSWORD

Contêiner mysql

CREATE DATABASE: my-db 
CREATE USER: wp
IDENTIFIED BY: secret

Passo a passo da configuração

Após iniciar o conteiner MySQL mysql_db e o contêiner Drupal 8 mydrupal podemos abrir no Browser a pagina http://dockerhost.local assumindo que dockerhost.local está apontando corretamente para o Computador host rodando o Docker que pode ser uma maquina Virtual, no caso do MAC OSX e Windows ou localhost no caso do Linux.

Abaixo aparecem as telas típicas desse processo.

Inicialmente devemos Escolher o Idioma

Escolhendo o Idioma

Pode ocorrer problema de rede

Problema de Rede

Resolvendo eventuais problemas de rede podemos Escolhendo o Perfil de Instalação

Escolhendo o Perfil de Instalação

E em seguida Configurar o Database

Configuração do Database

Pode ocorrer erro na Configuração do Database relacionados a endereçamento IP.

Erro no Database

Assim verificamos o IP do Contêiner que está rodando o contêiner MySQL. Obviamente podemos também usar nome de host em vez de endereço IP. Neste caso o nome do host em questão é mysql_db definido via parâmetro --link mysql_db:mysql quando invocamos o contêiner.

Verificando o endereço IP

Agora podemos Configurar o Database Corretamente

Configuração do Database Corretamente

E Instalar o Drupal

Instalando ...

Que pede os dados de Configuração do Site

Configuração do Site

Configuração do Site - Continuação

Finalmente temos a tela de confirmação : Bemvindo ao Site Drupal 8 Bemvindo ao Site Drupal 8

Instalando à partir de um Instalation Profile

Podemos escolher o Perfil de Instalação desejado. Neste caso escolhi o Panopoly.

Escolhendo o Perfil de Instalação

Assim teremos três novos modulos do Framework Panopoly além dos módulos dos quais ele depende.

https://raw.githubusercontent.com/joao-parana/jessie-drupal/master/docs/img/drupal-install-12.png

Funcionalidade do Panopoly

  • Panopoly Foundation
    • panopoly_core
  • panopoly_images
    • panopoly_theme
  • panopoly_magic
    • panopoly_widgets

Usando o Drupal Console

Como pode ser observado no Dockerfile, o Drupal Console é instalado

Para executá-lo faça:

docker exec -i-t  mydrupal /bin/bash

Isso permite que executemos dentro do Contêiner, comandos como este abaixo:

drupal help site:install
# Instalando o site via Drupal Console        
drupal site:install \
          --db-type="mysql" \
          --db-host="mysql_db" \
          --db-name="my-db" \
          --db-user="wp" \
          --db-pass="secret" \
          --db-prefix="d8_" \
          --db-port=3306 \
          --langcode="en" \
          --site-name="Meu Site Drupal 8" \
          --site-mail="joao.parana@gmail.com" \
          --account-name="admin" \
          --account-mail="joao.parana@gmail.com" \
          --account-pass="drupal8admin" "panopoly"  
drupal site:status

Links úteis

Playlist DrupalCon 2015 - Barcelona

Para entender a arquitetura do Drupal8:

Drupal 8 & Symfony e projeto associado no Github

Resolução de Problemas

Atualmente o comando drupal site:install do Drupal Console não instala o Site como especificado se usamos --langcode="pt_BR". Quando usamos --langcode="en" o Drupal Console instala o Site porém ao tentar usá-lo o Apache gera erro 500 e retorna o HTML mostrado abaixo:

<html>
  <head>
  </head>
  <body>
    The website encountered an unexpected error. 
    Please try again later.
  </body>
</html>

E no Log do PHP /var/log/php/php-scripts.log vemos:

Uncaught PHP Exception InvalidArgumentException: "No check has been registered for access_check.user.login_status" at /var/www/html/core/lib/Drupal/Core/Access/CheckProvider.php line 99

Desta forma comentei o comando correspondente na Shell install-or-run-drupal8 té que o Drupal Console esteja mais estável.

Assim é preciso instalar como anteriormente, ou seja, navegando pelo Browser interativamente usando open http://dockerhost.local e informando os parâmetros como necessário.