ちと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を作成します。
アクセス
初期設定
データベースの設定
データベース設定時、「Database host」は「database」と入力してください。 これは、docker-compose.yamlファイルの「web」の、
links:
- database:database
の名前と一致させます。