はじめに
Laravelの開発に限らず、LAMP/LEMP環境をサクッと作りたい時にLaradockの使い勝手がすごく良いのでオススメです。
今回はLaradockでDrupal8を動かしてみるよ!
Laradockとは
Homesteadに代わるLaravel開発用のDockerイメージ群です。Docker Composeで管理されているので、必要なものだけ選んで起動します。
Laravelにありがちな「全部用意しといた」感がここでも発揮されています。(後述するイメージ一覧参照)
とにかく至れり尽くせりな割に「Composer入れといたからLaravelのセットアップは自分でやってね!」というのがちょっと不思議ですが…おかげで他のPHPフレームワークやWordpress, Drupal等のCMSでもイイ感じに使えますよ。
詳しく知りたい人は公式のイントロダクションを読んでね!
対象
- 開発環境のセットアップに頭を使いたくないひと ←だいじ
- とりあえずDockerベースのLAMP/LEMP環境がほしいひと
- Drupalに興味があるひと
環境
- ホストにGit,Dockerがインストールされていること
- もちろんWindowsでもMacでもOKだよ!
やること
- サクッとLEMP開発環境を用意して、Drupal8を動かす
- Laradockが用意してくれているイメージの中から、PHP-FPM・Nginx・MySQLだけ使います。
- なぜか手元の端末だとMariaDBだけコケるので、とりあえずMySQLで。
やってみよう
Laradockの準備
$ mkdir drupal
$ cd drupal
$ mkdir public # Drupalの配置先
$ git clone https://github.com/LaraDock/laradock.git laradock
$ cd laradock
$ cp env-example .env
# 先程作ったDrupalの配置先を
- APPLICATION=../
+ APPLICATION=../public
# 必要に応じてDBの永続化データの保存先を変更しておく
- DATA_SAVE_PATH=~/.laradock/data
+ DATA_SAVE_PATH=~/.laradock/data/drupal
### Applications Code Container #############################
applications:
image: tianon/true
volumes:
# ディレクトリのマウント先を変更
- - ${APPLICATION}:/var/www
+ - ${APPLICATION}:/var/www/public
NginxとMySQLのコンテナを起動します。applications,php-fpm,workspaceは自動的に立ち上がるので指定しなくてもOK。
初回はビルドの関係で少し時間がかかります。
$ docker-compose up -d nginx mysql
Drupalの準備
publicディレクトリにDrupalのソースを配置します。バージョンは適宜読み替えて下さい。
ホスト側でDrush/Drupal Consoleを使っても、Drupal公式からダウンロードして展開しても、コンテナに入ってComposer経由でも構いません。お好きなようにどうぞ。
備考: コンテナのDrushを有効化、Drush経由で配置
サクッと動かすだけなら必要ないんですが、開発を進めていくと結局使う事になりそうなので。
- WORKSPACE_INSTALL_DRUSH=false
+ WORKSPACE_INSTALL_DRUSH=true
$ docker-compose down
$ docker-compose build workspace
$ docker-compose up -d nginx mysql
$ docker-compose exec workspace bash
root@containerid:/var/www# drush dl drupal-8
root@containerid:/var/www# shopt -s dotglob
root@containerid:/var/www# mv drupal-8.3.5/* public
root@containerid:/var/www# rm -rf drupal-8.3.5
root@containerid:/var/www# exit
備考: コンテナに入ってソースをダウンロード、配置
$ docker-compose exec workspace bash
root@containerid:/var/www# curl -O https://ftp.drupal.org/files/projects/drupal-8.3.5.tar.gz
root@containerid:/var/www# tar -xvzf drupal-8.3.5.tar.gz
root@containerid:/var/www# shopt -s dotglob
root@containerid:/var/www# cp -r drupal-8.3.5/* public
root@containerid:/var/www# rm -rf drupal-8.3.5.tar.gz drupal-8.3.5
root@containerid:/var/www# exit
備考: Composer経由で配置
$ docker-compose exec workspace bash
root@containerid:/var/www# composer create-project drupal-composer/drupal-project:8.x-dev public --stability dev --no-interaction
root@containerid:/var/www# exit
Composerで配置した場合/public/webにDrupalのソースがインストールされるので、NginxのRootを変更します。
# 変更後、docker-compose restart nginxを忘れずに。
- root /var/www/public;
+ root /var/www/public/web;
Drupalのセットアップ
http://localhost からウィザードに従ってセットアップします。
OPcacheのアラートは無視して構いません。
データベース設定の初期値について
項目 | 初期値 |
---|---|
データベース名 | default |
データベースのユーザー名 | default |
データベースのパスワード | secret |
高度なオプション>ホスト | mysql |
これらは.envで定義されているので、必要があれば適宜書き換えてください。
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
コンテナのDrushからインストールする場合
コンテナのDrushを有効化してある場合はこちらでも。
$ docker-compose exec workspace bash
root@containerid:/var/www# cd public
root@containerid:/var/www/public# drush si --db-url=mysql://default:secret@mysql:3306/default
You are about to CREATE the 'default' database. Do you want to continue? (y/n): y
Starting Drupal installation. This takes a while. Consider using the --notify global option.
Installation complete. User name: admin User password: PASSWORD
Congratulations, you installed Drupal!
利用可能なイメージ一覧
docker-compose up -d IMAGEで即利用可能なイメージ一覧
- Database Engines
- MySQL, MariaDB, Percona, MongoDB, Neo4j, RethinkDB, MSSQL, PostgreSQL, Postgres-PostGIS
- Database Management
- PhpMyAdmin, Adminer, PgAdmin
- Cache Engines
- Redis, Memcached, Aerospike
- PHP Servers
- NGINX, Apache2, Caddy
- PHP Compilers
- PHP FPM, HHVM
- Message Queueing
- Beanstalkd, RabbitMQ, PHP Worker
- Queueing Management
- Beanstalkd Console, RabbitMQ Console
- Random Tools
- HAProxy, Certbot, Blackfire, Selenium, Jenkins, ElasticSearch, Kibana, Mailhog, Minio, Varnish, Swoole, Laravel Echo , and more
Workspaceイメージ内であらかじめ用意されているツール群
- Workspace Image Tools
- PHP CLI, Composer, Git, Linuxbrew, Node, V8JS, Gulp, SQLite, xDebug, Envoy, Deployer, Vim, Yarn, SOAP, Drush, and more
ただし一部のツールは.envのパラメータを変更したのち、Workspaceイメージを再度ビルドする必要があります。ご注意を!
WORKSPACE_INSTALL_XDEBUG=false
WORKSPACE_INSTALL_SOAP=false
WORKSPACE_INSTALL_MONGO=false
WORKSPACE_INSTALL_MSSQL=false
WORKSPACE_INSTALL_NODE=false
WORKSPACE_INSTALL_YARN=false
WORKSPACE_INSTALL_DRUSH=false
WORKSPACE_INSTALL_AEROSPIKE=false
WORKSPACE_INSTALL_V8JS=false
WORKSPACE_COMPOSER_GLOBAL_INSTALL=false
WORKSPACE_INSTALL_WORKSPACE_SSH=false
WORKSPACE_INSTALL_LARAVEL_ENVOY=false
WORKSPACE_INSTALL_LARAVEL_INSTALLER=false
WORKSPACE_INSTALL_DEPLOYER=false
WORKSPACE_INSTALL_LINUXBREW=false
WORKSPACE_INSTALL_MC=false
WORKSPACE_INSTALL_IMAGE_OPTIMIZERS=false