ちとdrupalで開発する機会があったので、 docker-composeを使って開発環境を構築した時の手順をまとめます。

今回はdrupal7を使いましたけど、他のバージョンでもいけるはず。

dockerイメージは公式のものを使いました。 docker-hub drupal

データベースはmysql(MariaDB)です。 docker-hub mariadb

ディレクトリ構成

.
├── docker-compose.yaml
└── drupal

drupalディレクトリが、drupalのルートディレクトリになります。

docker-compose.yamlファイルの作成

docker-compose.yamlファイルはこうなりました。

作成にはこちらを参考にさせていただきました。 docker-compose-drupal

version: "2"

services:
  # PHP Web Server
  web:
    # Build the Drupal 7 image
    # https://hub.docker.com/r/_/drupal/
    image: drupal:7
    # Environment variables
    environment:
      # Drupal settings
      DRUPAL_PROFILE: standard
      DRUPAL_SITE_NAME: Drupal
      DRUPAL_USER: admin
      DRUPAL_PASS: admin
      DRUPAL_DBURL: mysql://drupal:drupal@database:3306/drupal
    ports:
      - "8000:80"
    volumes:
      - ./drupal:/app
    links:
      - database:database
    command: php -S 0.0.0.0:80 -t /app
    working_dir: /app
    restart: always

  # MySQL Server
  database:
    image: mariadb:10
    environment:
      MYSQL_USER: drupal
      MYSQL_PASSWORD: drupal
      MYSQL_DATABASE: drupal
      MYSQL_ROOT_PASSWORD: ''
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
    ports:
      - "3306:3306"
    restart: always
    volumes:
      - mysql-db:/var/lib/mysql

volumes:
  mysql-db:

drupalの設置

こちらからソースコードをダウンロード・解凍をして、./drupalディレクトリに配置。 Drupal

docker-composeで立ち上げ

$ docker-compose up -d

データベースの作成

$ docker ps -a

こちらのコマンドなどで作成したdatabaseのコンテナ名を確認し、docker execコマンドでコンテナ内に入ります。

$ docker exec -it (databaseのコンテナ名) bash
(database_1)$ mysql -u root -p
Enter password:    ←docker-compose.yamlファイルで設定したパスワードを入力
MariaDB [(none)]> CREATE DATABASE drupal CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| drupal             |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.011 sec)
CREATE DATABASE drupal CHARACTER SET utf8mb4;

でdrupalが使用するDBを作成します。

アクセス

http://localhost:8000

DrupalInstallationProfile

初期設定

データベースの設定

データベース設定時、「Database host」は「database」と入力してください。 これは、docker-compose.yamlファイルの「web」の、

    links:
      - database:database

の名前と一致させます。

DrupalDBSetup