LoginSignup
0
2

More than 5 years have passed since last update.

LaradockでDrupal8を動かしてみる

Last updated at Posted at 2017-07-15

はじめに

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/laradock/.env
# 先程作ったDrupalの配置先を
- APPLICATION=../
+ APPLICATION=../public

# 必要に応じてDBの永続化データの保存先を変更しておく
- DATA_SAVE_PATH=~/.laradock/data
+ DATA_SAVE_PATH=~/.laradock/data/drupal
drupal/laradock/docker-compose.yml
### 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経由で配置

サクッと動かすだけなら必要ないんですが、開発を進めていくと結局使う事になりそうなので。

drupal/laradock/.env
- 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を変更します。

laradock/nginx/nginx.conf
# 変更後、docker-compose restart nginxを忘れずに。
- root /var/www/public;
+ root /var/www/public/web;

Drupalのセットアップ

http://localhost からウィザードに従ってセットアップします。
OPcacheのアラートは無視して構いません。

データベース設定の初期値について

項目 初期値
データベース名 default
データベースのユーザー名 default
データベースのパスワード secret
高度なオプション>ホスト mysql

これらは.envで定義されているので、必要があれば適宜書き換えてください。

drupal/laradock/.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イメージを再度ビルドする必要があります。ご注意を!

 .env
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
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2