Drupal8環境構築（Docker）

こちらの記事の書き直しというか、インストールしなおした記録。

https://qiita.com/JQinglong/items/b2d86d41fad37833b21e

どうも、Drupal9 は時期尚早な気がする。

Drush10 はさらに素人が手を出すには早すぎる。
Drupal9.2.5 をインストールしたのち、9.2.7 が出ているということで、アップする前にバックアップをしようとしましたが、Drush コマンドが違いすぎてよく分からない。

その前にも、こちら

https://www.studio-umi.jp/blog/18/273

のようなことをやってみようと思ったのですが、機能拡張が対応していないものがいろいろありできないとか。

ただ、

https://www.itmedia.co.jp/news/articles/2108/27/news108.html

の話があるので、着いて行っておきたいのと、ヘッドレスCMSの可能性を探りたい、その場合に、コンテントタイプを柔軟に作れる強みはやはりある、ということで、Drupal8 で再挑戦します。

## DockerCompose構成

前回は、Docker ファイルの中で Drushインストールを走らせる、など挑戦したのですが、そこも分かりにくいので、素直に、公式に書いてある記述をベースとします。

https://hub.docker.com/_/drupal

ただ、

- DBは別途立てているものに接続する
- 別途立てているnginx-proxyを経由

という構成にしています。
こんな感じ。

```yml:/home/mariadb/docker-compose.yml
version: '3'

services:
  mariadb:
    container_name: mariadb
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: xxx
      MYSQL_USER: xxx
      MYSQL_PASSWORD: xxx
      MYSQL_DATABASE: xxx
    volumes:
      - ./mariadb:/var/lib/mysql
      - ./initdb:/docker-entrypoint-initdb.d
    ports:
      - "3336:3306"
    restart: always
```

```yml:/home/proxy/docker-compose.yml
version: '3'

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    restart: on-failure
    labels:
      - com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=jwilder/nginx-proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - proxy:/etc/nginx/vhost.d
      - proxy:/usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./certs:/etc/nginx/certs:ro
    network_mode: bridge

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    restart: on-failure
    depends_on:
      - nginx-proxy
    volumes:
      - proxy:/etc/nginx/vhost.d
      - proxy:/usr/share/nginx/html
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./certs:/etc/nginx/certs:rw
    network_mode: bridge

volumes:
  proxy:
```

```yml:/home/drupal8/docker-compose.yml
version: '3.1'

services:

  drupal:
    image: drupal:8-apache
    # ports:
    #   - 8080:80
    volumes:
      - /var/www/html/modules
      - /var/www/html/profiles
      - /var/www/html/themes
      # this takes advantage of the feature in Docker that a new anonymous
      # volume (which is what we're creating here) will be initialized with the
      # existing content of the image at the same location
      - /var/www/html/sites
    restart: always
    network_mode: bridge
    environment:
      PROFILE: "minimal"
      VIRTUAL_HOST: www.xxx.com
      VIRTUAL_PORT: 80
      LETSENCRYPT_HOST: www.xxx.com
      LETSENCRYPT_EMAIL: xxx@xxx.com
```

volumes の設定も前回構成では苦労しました。なかなか、settings.php を扱えない・・・
今回はその部分は公式のままにして、匿名volumesにしています。
本当は直下においた方がわかりやすいかなと思いつつ、まあ、場所は

```sh
docker network inspect bridge
```

で確認できるので良いとします。

##　インストール

DB と nginx は立ち上げておきます。
そして、drupal のイメージを上げる前に、データベースを作っておきます。

```sh
mysql -u root -p
xxx

CREATE DATABASE drupal8_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all privileges on drupal8_db.* to 'xxx'@'%' with grant option;
show grants for 'xxx'@'%';

```

Drupal のイメージを上げて、サイトにアクセスすると、rupal のインストーラが起動します。

前回は、sites/default　への書き込みができないとか苦労しましたが、問題なく進みました。

## テーマ

前回書きませんでしたが、まずはやはりテーマを設定したい。
見た目が良いとテンション上がりますから。

使用するのは、TARA。

https://demo2.drupar.com/tara/

有料のProじゃないとあまり設定ができないので面白みがないという気もしつつ、その中でもいろいろできることもあるので、使ってみます。

テーマのインストールは、
サイト/admin/theme/install
の「次のURLからインストールする」に
https://ftp.drupal.org/files/projects/tara-8.3.3.tar.gz
を指定。
ポイントとしては、管理用テーマには指定しない方が良い、という感じでしょうか。
（Bootstrapテーマよりは普通に動くので問題なさそうですが、若干くどい気が・・・）

## バックアップ（しようと思ったら・・・）

定期バックアップは、Backup and Migrate を使うのが一般的なように感じられます。

https://www.drupal.org/project/backup_migrate

そもそも、Durupal9 を諦めたきっかけは、これを上手く動かせなかったからですが・・・

機能拡張
サイト/admin/modules
から、「新しいモジュールをインストール」で
サイト/admin/modules/install
に移動し、
「次のURLからインストールする」に
https://ftp.drupal.org/files/projects/backup_migrate-5.0.1.tar.gz
を指定して「インストール」。

終わったら、機能拡張
サイト/admin/modules
に戻って、Backup and Migrate　が追加されているので、チェックして「インストール」。
ここの流れがイマイチな気がする・・・

終わったら、Backup and Migrate　のエリアが開けるようになり、その中に「構成」があるのでクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77307/e8af63ce-518f-65d9-f6cb-f0807f649167.png)

ここで各種設定をするのでしょうが、まずは、「今すぐバックアップ」をしてみようかと・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77307/8970746e-a288-7595-c68c-cb1504c4c91c.png)

だめでした。

これだけで、一つのテーマになりそうな気がするので、本投稿はここまで。