Skip to content
This repository has been archived by the owner on Dec 3, 2022. It is now read-only.

Latest commit

 

History

History
186 lines (126 loc) · 9.63 KB

README_ja.md

File metadata and controls

186 lines (126 loc) · 9.63 KB

Drop Fabrik

Drop FabrikはDrupalの開発環境を素早く立ち上げるためのDocker環境です。 5分から10分程度でDrupalの環境をDocker上に構築することができます。

コンセプト

(面倒なので)「使う際にビルドしない」をコンセプトにしています。 そのため、基本的にofficial imageをそのまま使い、ボリューム経由で設定ファイルのみを差し替える形で Drupalの稼働に必要な環境を作っています。

概要

以下のコンテナーイメージで構成されています。

Container Service name Image Exposed port
Nginx Proxy nginx-proxy jwilder/nginx-proxy 80
Nginx web nginx
MariaDB db mariadb 3306
PHP-FPM 5.6 / 7.0 / 7.1 php blauerberg/drupal-php
mailhog mailhog mailhog/mailhog 8025 (HTTP server)
phpmyadmin phpmyadmin phpmyadmin/phpmyadmin 8080 (HTTP server)
dozzle dozzle amir20/dozzle 8081 (HTTP server)

動作環境

Getting started

コンテナーを起動する

初めにレポジトリをクローンします。

$ git clone https://github.com/blauerberg/dropfabrik.git
$ cd dropfabrik

次にDrupalのソースコードをマウントするためのディレクトリを作成します。 デフォルトの設定では、ホストマシンの volumes/drupal をコンテナーのデータボリュームとしてマウントします。

$ mkdir -p volumes/drupal

Drupalのソースコードをダウンロードして展開します。

# Note: replace "X.Y.Z" in below to  Drupal's version you'd like to use.
$ curl https://ftp.drupal.org/files/projects/drupal-X.Y.Z.tar.gz | tar zx --strip=1 -C volumes/drupal

macOSを使っている場合、パフォーマンスの問題 を回避するために docker-sync を利用することを強く推奨します。 Use docker-sync を参照してください。

コンテナーを生成して起動します。

$ docker-compose up -d

ホストマシンがLinuxの場合は、ディレクトリの権限を修正する必要があります。

$ docker-compose exec php chown -R www-data:www-data /var/www/html/sites/default

Drupalにアクセスします。

$ open http://localhost # もしくはブラウザで http://localhost へアクセス

Drupalのインストール

データベースの認証情報は docker-compose.override.yml で設定されています。 デフォルト値は以下になります。

  • Database Name: drupal
  • Username: drupal
  • Password: drupal

詳細については https://hub.docker.com/_/mariadb/ の "Environment Variables" を参照してください。

Dropfabrikではnginx、mariadb、php-fpmは全て別々のコンテナーで動作します。 そのため、インストール時にデータベースサーバーのホスト名に localhost ではなく db を指定する必要があります。

ブラウザからウィザードでインストールする代わりに、以下のようにDrushを使ってインストールすることもできます。

$ docker-compose exec php drush -y --root="/var/www/html" site-install standard --site-name="Drupal on Docker" --account-name="drupal" --account-pass="drupal" --db-url="mysql://drupal:drupal@db/drupal" --locale=ja
# Drupal 8の場合は以下も実行
$ docker-compose exec php drush -y config-set system.theme admin bartik

コンテナを停止する

$ docker-compose stop

Other tips

うまく動きません!

Dropfabrikにはコンテナ内のログをブラウザ上で表示するためにDozzleが組み込まれています。 http://localhost:8081 にアクセスしてコンテナ内で何が起こっているのが確認してみましょう。周りにサポートしてくれるエンジニアがいる場合、Dozzleのログをそのまま見せるのは良い方法です。

webサーバーのホスト名を変更する

デフォルトでは localhost でのみwebサーバーにアクセスできるようになっています。 他の名前でアクセスしたい場合は、docker-compose.override.yml を開き、 VIRTUAL_HOST の値を変更してください。 また、hosts ファイルを編集し、127.0.0.1VIRTUAL_HOST で指定したホスト名が解決できるようにしてください。

PHPのバージョンを変更する

docker-compose.yml を編集し、使いたいPHPのバージョンに対応したイメージを使うように変更してください。

drupal-composer/drupal-project で管理されたコードを利用する

Drupal.orgで配布されているアーカイブをそのまま利用する場合は、ルートディレクトリがそのままDrupalのソースコードの最上位ディレクトリになりますが、 drupal-composer/drupal-project でDrupalのプロジェクトを管理している場合は、 web ディレクトリ以下がDrupalのソースコードとなります。

そのため、drupal-composer/drupal-projectで管理されているコードを利用する場合はwebサーバーのドキュメントルートを変更する必要があります。 docker-compose.override.yml を編集し、web サービスのボリュームで nginx/default.conf の代わりに nginx/default_for_drupal_composer.conf をマウントするように変更してください。

秘密鍵を含んだphpイメージをビルドする

drushなどで秘密鍵を使うケースを考慮し、 docker-compose.override.ymlphp イメージにホストOS側の秘密鍵をマウントするサンプルを用意しています。 ホストOSがlinuxとMacOSの場合はこの方法で問題ありませんが、ホストOSがWindowsの場合、ホスト側のファイルシステムの問題 で秘密鍵のパーミッションが正しく設定されません。

この問題のワークアラウンドとして、 php/php-fpm/id_rsa に秘密鍵をコピーし docker-compose build すると秘密鍵入りのカスタムイメージをビルドすることができます。

コンテナの内部にアクセスする

sshではなく docker-compose exec を使いましょう。

$ docker-compose exec {Service name} /bin/bash
# ex. docker-compose exec php /bin/bash

Drushを使う

Drushはphpコンテナーにインストールされています。

$ docker-compose exec php drush st

既存のサイトのデータベースをリストアする

gzipで圧縮されたSQLのダンプファイルを initdb.sql.gz という名前で配置し、docker-compose.override.yml の以下の行のコメントアウトを解除してください。 コンテナの生成時に一度だけこのファイルがロードされ、データベースが復元されます。

- ./initdb.sql.gz:/docker-entrypoint-initdb.d/initdb.sql.gz

データベースに接続する

Drush経由で接続する:

$ docker-compose exec php drush sqlc

データベースコンテナは 127.0.0.1上でport 3306をlistenします。そのため、MysqlWorkbenchSequel Pro のようなホストOS上で動作するGUIアプリケーションからコンテナー内のデータベースに接続することができます。

また、 http://localhost:8080 にアクセスすると phpmyadmin を利用してデータベースにアクセスすることもできます。

docker-sync を使う

macOSを使っている場合、パフォーマンスの問題 を回避するために docker-sync を利用することを強く推奨します。インストール方法は docker-sync.io を参照してください。

docker-syncを使う場合は docker-compose.override-for-docker-sync.ymldocker-compose.override.yml としてコピーしてください。 また、docker-compose の代わりに docker-sync-stack でイメージを起動する必要があります。

$ docker-sync-stack start

詳細は https://github.com/EugenMayer/docker-sync/wiki を参照してください。

Supporting Organizations