Drupal9+MySQL+PHPMyAdminのdocker開発環境を作りました。
DrupalというWordPressに似て非なるCMSがあるのですが、意外と記事が少なく、Dockerで環境構築に関する記事も多少あれどなぜか動かない状況で、頑張って自分で動くようにしてみました。
結論から申し上げますと、動くのですが、ちょっと不安です。
はじめてのDrupalのために開発環境を用意したため、ディレクトリ構造のどこがどう作用しているのか掴みきれてないためです。
docker-compose.yml
# @format
version: "3"
services:
db:
image: mysql:5.7
volumes:
- ./db/mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pass_tekitou
MYSQL_DATABASE: drupal_db
MYSQL_USER: user
MYSQL_PASSWORD: user_pass_tekitou
drupal:
image: drupal:latest
volumes:
- ./drupal/themes:/var/www/html/themes
- ./drupal/modules:/var/www/html/modules
- ./drupal/profiles:/var/www/html/profiles
- ./drupal/sites/default/files:/var/www/html/sites/default/files
- ./php.ini:/usr/local/etc/php/conf.d/php.ini
ports:
- 2020:80
depends_on:
- db
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
depends_on:
- db
ports:
- 2222:80
volumes:
data: {}
幾つか拝見した記事に載っていた
- ./drupal/sites:/var/www/html/sites
これだと、Drupalのインストール途中でエラーになっちゃうんです。
- /var/www/html/sites
みたいにマウントしなければ問題なく動くのですが、毎度bashしてcdで移動してファイル操作するは手間すぎますよね…
Dockerのマウントの挙動が以前と違う気がします…それが原因な気もします…
Drupal公式Dockerイメージのリポジトリにもissueとして出ていて、そこの解決策を参考に
- ./drupal/sites/default/files:/var/www/html/sites/default/files
に変えると、うまく行きました!
とりあえず、これでymlファイルは完成です。
ただこれだと、php.iniがフォルダとして生成されてしまう(←以前はこんな事なかったのになぜ…?)なので、予めphp.iniを作っておきます。
php.ini
file_uploads = On
memory_limit = 2000M
upload_max_filesize = 2000M
post_max_size = 2000M
max_execution_time = 600
アップロード制限も予め書いておきました。
なので階層的には
・docker-compose.yml
・php.ini
の2つのみです。
両方できましたら、
docker-compose up -d
docker-compose up -d
でコンテナ起動しちゃってください。
そうするとdbフォルダとdrupalフォルダが作られて、
でDrupalが でPHPMyAdminが動きます。
drupalの基幹データはおそらくdrupal/sites/default/filesにマウントされます。おそらくと言うのは、はじめてのDrupalのために開発環境を用意したため、ディレクトリ構造のどこがどう作用しているのか掴みきれてないためです。
Drupalのインストール
基本的には
にアクセスして、そのまま従えばいいのですが、DBのところだけ一工夫データベース名:drupal_db
データベースのユーザー名:user
データベースのパスワード:user_pass_tekitou
ホスト :db
ポート:3306
特に、ホストはデフォルトがlocalhostになっていますが、これだとうまくいきません。docker-compose.ymlで記載したdbに変えてください。
終わり
お疲れ様でした。
Discussion