💧

Drupal9+MySQL+PHPMyAdminのdocker開発環境を作りました。

2021/05/14に公開

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フォルダが作られて、

http://localhost:2020
でDrupalが
http://localhost:2020
でPHPMyAdminが動きます。

drupalの基幹データはおそらくdrupal/sites/default/filesにマウントされます。おそらくと言うのは、はじめてのDrupalのために開発環境を用意したため、ディレクトリ構造のどこがどう作用しているのか掴みきれてないためです。

Drupalのインストール

基本的には
http://localhost:2020
にアクセスして、そのまま従えばいいのですが、DBのところだけ一工夫

データベース名:drupal_db
データベースのユーザー名:user
データベースのパスワード:user_pass_tekitou
ホスト :db
ポート:3306

特に、ホストはデフォルトがlocalhostになっていますが、これだとうまくいきません。docker-compose.ymlで記載したdbに変えてください。

終わり

お疲れ様でした。

Discussion