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
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
Pode ocorrer problema de rede
Resolvendo eventuais problemas de rede podemos Escolhendo o Perfil de Instalação
E em seguida Configurar o Database
Pode ocorrer erro na Configuração do Database relacionados a endereçamento IP.
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.
Agora podemos Configurar o Database Corretamente
E Instalar o Drupal
Que pede os dados de Configuração do Site
Finalmente temos a tela de confirmação : Bemvindo ao Site Drupal 8
Podemos escolher o Perfil de Instalação desejado. Neste caso escolhi o Panopoly.
Assim teremos três novos modulos do Framework Panopoly além dos módulos dos quais ele depende.
- Panopoly Foundation
- panopoly_core
- panopoly_images
- panopoly_theme
- panopoly_magic
- panopoly_widgets
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
Playlist DrupalCon 2015 - Barcelona
Para entender a arquitetura do Drupal8:
Drupal 8 & Symfony e projeto associado no Github
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.