minishift v1.28.0でWordPress＋MariaDBをPodで立ち上げる

# ベースのDocker ImageをRed Hat Container Catalog(RHCC)から取得する
信頼できるソース元である[Red Hat Container Catalog(RHCC)](
https://access.redhat.com/containers/)からベースとなるDocker Imageを取得します。

![01.png](https://qiita-image-store.s3.amazonaws.com/0/324255/f54f4ba4-87ee-02b8-e42f-94f247e05a41.png)

今回は勉強がてらWordPressのDocker ImageとMariaDBのDocker Imageを取得し、プロジェクト内で参照するよう設定してみたいと思います。


## WordPressのDocker Imageを取得
[Red Hat Container Catalog(RHCC)](
https://access.redhat.com/containers/)で「WordPress」を検索

![02.png](https://qiita-image-store.s3.amazonaws.com/0/324255/7727358b-2a21-44fa-b392-1a26a1591dcf.png)

色々なイメージがリストアップされている中から今回は「WordPress with Nginx and PHP7(`bitnami/wordpress-nginx-php7`)」を選びました。

![04-1.png](https://qiita-image-store.s3.amazonaws.com/0/324255/b4a9a3f8-afef-f8ac-373b-0ffc8c4d68a3.png)

Registryはregistry.connect.redhat.comのようですね。
WordPress with Nginx and PHP7(`registry.connect.redhat.com/bitnami/wordpress-nginx-php7`)」

Docker Imageはビルドする際に環境変数を引数に環境構築を行いますので、設定を確認します。


Overviewの「[README & Configuration Options](https://github.com/bitnami/bitnami-docker-wordpress-nginx/blob/master/README.md)」を参考にすると

|Variable|Description|Default|
|:--|:--|:--|
|**MARIADB_HOST**|Hostname for MariaDB server.|mariadb|
|**MARIADB_PORT_NUMBER**|Port used by MariaDB server.|3306|
|**WORDPRESS_DATABASE_NAME**|Database name that WordPress will use to connect with the database.|bitnami_wordpress|
|**WORDPRESS_TABLE_PREFIX**|Table prefix to use in WordPress.|wp_|
|**WORDPRESS_DATABASE_USER**|Database user that WordPress will use to connect with the database.|bn_wordpress|
|**WORDPRESS_DATABASE_PASSWORD**|Database password that WordPress will use to connect with the database.|No defaults.|
|**ALLOW_EMPTY_PASSWORD**|It can be used to allow blank passwords.|no|

## MariaDBのDocker Imageを取得
[Red Hat Container Catalog(RHCC)](
https://access.redhat.com/containers/)で「MariaDB」を検索
![05.png](https://qiita-image-store.s3.amazonaws.com/0/324255/3390d24f-5221-6633-fbf7-8af97c1e54f1.png)
最新版は色々と泣かされそうなので「MariaDB 10.1(`rhscl/mariadb-101-rhel7`)」を選びました。
こちらは配布されるRegistryが違うみたいですね。
![05-1.png](https://qiita-image-store.s3.amazonaws.com/0/324255/f828206d-5055-2dc9-6377-531b8baabb9e.png)
MariaDB10.1(`registry.access.redhat.com/rhscl/mariadb-101-rhel7`)


こちらも環境変数を確認しますが…なかなか見当たりません。
Tagsを選択し、最新TagをClickします。
![06.png](https://qiita-image-store.s3.amazonaws.com/0/324255/dc95008b-7833-1f29-80f1-183a64718c85.png)
DockerタブをClickするとここに環境変数のことが書いてあります。
![07.png](https://qiita-image-store.s3.amazonaws.com/0/324255/713c670a-c992-a2fa-ad5c-5587254a49fd.png)

|Variable|Description|Note|
|:--|:--|:--|
|**MYSQL_USER**|Database user name||
|**MYSQL_PASSWORD**|User's password||
|**MYSQL_DATABASE**|Name of the database to create||
|**MYSQL_ROOT_PASSWORD**|Password for the 'root' MySQL account|Optional|

# ベースイメージをminishiftに登録する
情報も集まりましたのでminishiftにDocker ImageをPullします。

```bash
[tak@centos76 ~]$ minishift ssh
[docker@minishift ~]$ docker login registry.connect.redhat.com --username <username>
Password:<password>
Login Succeeded
```

```bash
[docker@minishift ~]$ docker search registry.connect.redhat.com/wordpress
INDEX        NAME                                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redhat.com   registry.connect.redhat.com/bitnami/wordpress-apache-php5   This WordPress container solution is optim...   0
redhat.com   registry.connect.redhat.com/bitnami/wordpress-apache-php7   This WordPress container solution is optim...   0
redhat.com   registry.connect.redhat.com/bitnami/wordpress-nginx-php5    This WordPress container solution is optim...   0
redhat.com   registry.connect.redhat.com/bitnami/wordpress-nginx-php7    This WordPress container solution is optim...   0

[docker@minishift ~]$ docker pull registry.connect.redhat.com/bitnami/wordpress-nginx-php7
Using default tag: latest
Trying to pull repository registry.connect.redhat.com/bitnami/wordpress-nginx-php7 ...
latest: Pulling from registry.connect.redhat.com/bitnami/wordpress-nginx-php7
367d84554057: Pull complete
:
119b0de383d9: Pull complete
Digest: sha256:7f9bef9632f2a9a87ff4c02ded5080d4048418d26913d3dacfb9cf1c6612ae04
Status: Downloaded newer image for registry.connect.redhat.com/bitnami/wordpress-nginx-php7:latest
[docker@minishift ~]$ exit
[tak@centos76 ~]$ oc import-image my-bitnami/wordpress-nginx-php7 --from=registry.connect.redhat.com/bitnami/wordpress-nginx-php7 --confirm
```

```bash
[docker@minishift ~]$ docker search registry.access.redhat.com/mariadb
INDEX        NAME                                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redhat.com   registry.access.redhat.com/openshift3/mariadb-apb           Ansible Playbook Bundle application defini...   0                    
redhat.com   registry.access.redhat.com/rhosp12/openstack-mariadb        Red Hat OpenStack Container image for open...   0                    
redhat.com   registry.access.redhat.com/rhosp13/openstack-mariadb        Red Hat OpenStack Container image for open...   0                    
redhat.com   registry.access.redhat.com/rhosp14-beta/openstack-mariadb   Red Hat OpenStack Beta Container image for...   0                    
redhat.com   registry.access.redhat.com/rhscl/mariadb-100-rhel7          MariaDB 10.0 SQL database server                0                    
redhat.com   registry.access.redhat.com/rhscl/mariadb-101-rhel7          MariaDB server 10.1 for OpenShift and gene...   0                    
redhat.com   registry.access.redhat.com/rhscl/mariadb-102-rhel7          MariaDB is a multi-user, multi-threaded SQ...   0  

[docker@minishift ~]$ docker pull registry.access.redhat.com/rhscl/mariadb-101-rhel7
Using default tag: latest
Trying to pull repository registry.access.redhat.com/rhscl/mariadb-101-rhel7 ... 
latest: Pulling from registry.access.redhat.com/rhscl/mariadb-101-rhel7

23113ae36f8e: Pull complete
:
84c39a3a2476: Pull complete
sha256:eda05d7ccdd32f0993e880b8ee0d92bbd61abde6bb7450193fd4b67ea1eb0f1b
Status: Downloaded newer image for registry.access.redhat.com/rhscl/mariadb-101-rhel7:latest
[docker@minishift ~]$ exit
[tak@centos76 ~]$ oc import-image my-rhscl/mariadb-101-rhel7 --from=registry.access.redhat.com/rhscl/mariadb-101-rhel7 --confirm
```

念のため登録されているDocker Imageを確認しておきます。

```bash
[tak@centos76 ~]$ minishift ssh
Last login: Sat Dec 22 17:11:10 2018 from 192.168.42.1
[docker@minishift ~]$ docker images
REPOSITORY                                                 TAG                 IMAGE ID            CREATED             SIZE
docker.io/openshift/origin-node                            v3.11.0             438d61da63d1        20 hours ago        1.16 GB
docker.io/openshift/origin-control-plane                   v3.11.0             00f980c345c1        20 hours ago        825 MB
docker.io/openshift/origin-hyperkube                       v3.11.0             d65ee3cc9874        20 hours ago        506 MB
docker.io/openshift/origin-haproxy-router                  v3.11.0             316c2621011d        20 hours ago        407 MB
docker.io/openshift/origin-pod                             v3.11.0             045ddf827c75        20 hours ago        258 MB
docker.io/openshift/origin-deployer                        v3.11.0             d05e619aac21        20 hours ago        380 MB
docker.io/openshift/origin-hypershift                      v3.11.0             a777d85d24b9        20 hours ago        546 MB
docker.io/openshift/origin-cli                             v3.11.0             83d7b0b2f011        20 hours ago        380 MB
172.30.1.1:5000/openshift/mariadb                          <none>              5e784880fd90        2 weeks ago         458 MB
registry.access.redhat.com/rhscl/mariadb-101-rhel7         latest              a4deee8ed5a5        3 weeks ago         455 MB
registry.connect.redhat.com/bitnami/wordpress-nginx-php7   latest              2892cd4d344e        5 weeks ago         580 MB
docker.io/openshift/origin-web-console                     v3.11.0             be30b6cce5fa        2 months ago        339 MB
docker.io/openshift/origin-docker-registry                 v3.11.0             a0d5ad164395        2 months ago        305 MB
docker.io/openshift/origin-service-serving-cert-signer     v3.11               47dadf9d43b6        2 months ago        276 MB
```

# MariaDBのPod作成
minishiftのconsoleでプロジェクトに入ります。
OverviewのAdd to ProjectからDeploy Imageを選択します。
![10.png](https://qiita-image-store.s3.amazonaws.com/0/324255/03bb45fd-63c5-b84b-568f-b4fe25d16ea6.png)
まずはMariaDBのImage Nameを入力し虫眼鏡ボタンをクリックします。
`registry.access.redhat.com/rhscl/mariadb-101-rhel7`
![11.png](https://qiita-image-store.s3.amazonaws.com/0/324255/e11440cf-2be6-bfcb-b196-eeda8c36bd16.png)
![12.png](https://qiita-image-store.s3.amazonaws.com/0/324255/a6ecb553-c0b3-ed66-e42b-da7941de2673.png)

下部に表示された「Environment Variables」に先ほど調べた値を入力して行きます。
仮にこんな感じにしておきます(笑)

|Variable|Description|Value|
|:--|:--|:--|
|**MYSQL_USER**|Database user name|user|
|**MYSQL_PASSWORD**|User's password|password|
|**MYSQL_DATABASE**|Name of the database to create|wordpress_db|
|**MYSQL_ROOT_PASSWORD**|Password for the 'root' MySQL account|root_password|

![13.png](https://qiita-image-store.s3.amazonaws.com/0/324255/1fcb8f1f-6f72-43e6-69eb-eebf34278379.png)

最後にDeployをクリックします。

DeployされるのをただじっとOverviewの画面で確認してるも良し
詳細を見るため#1をクリックしLogを表示するもよし
![14.png](https://qiita-image-store.s3.amazonaws.com/0/324255/f8707e0e-f45e-dcb7-7da7-6d56f1976437.png)
![15.png](https://qiita-image-store.s3.amazonaws.com/0/324255/e26ea0e2-4486-70ad-7c79-11b71abee1b9.png)

# MariaDBのServiceの確認
Project内のPod同士で通信を行うにはServiceを利用します。
Applications＞Servicesをクリックし確認すると１つ出来上がっています。
![16.png](https://qiita-image-store.s3.amazonaws.com/0/324255/2b7833c3-2553-6228-9dfa-1a8e3ab4c5c3.png)
![17.png](https://qiita-image-store.s3.amazonaws.com/0/324255/f26e49da-30d5-fec3-f1b2-f78b961ae628.png)
ここに表示されているHostnameが所謂サーバー名にあたります。

# WordPressのPod作成
MariaDBと同じようにProject内でDeploy Imageを選択して
wordpressのImage Nameを入力し虫眼鏡ボタンをクリックします。
`registry.connect.redhat.com/bitnami/wordpress-nginx-php7`
![20.png](https://qiita-image-store.s3.amazonaws.com/0/324255/a523b2f1-82f2-f55b-b6e9-14de389bf5c7.png)
下部に表示された「Environment Variables」に先ほどMariaDBで設定した値を入力して行きます。

|Variable|Default|Value|
|:--|:--|:--|
|**MARIADB_HOST**|mariadb|mariadb-101-rhel7.myproject.svc|
|**MARIADB_PORT_NUMBER**|3306|←|
|**WORDPRESS_DATABASE_NAME**|bitnami_wordpress|wordpress_db|
|**WORDPRESS_TABLE_PREFIX**|wp_|←|
|**WORDPRESS_DATABASE_USER**|bn_wordpress|user|
|**WORDPRESS_DATABASE_PASSWORD**|No defaults.|password|
|**ALLOW_EMPTY_PASSWORD**|no|←|
※←はDefault値を採用するのでEnvironment Variablesには未定義

![21.png](https://qiita-image-store.s3.amazonaws.com/0/324255/4cf6aab5-62ac-b6d7-304f-166bba25ce30.png)
そしてDeploy
![22.png](https://qiita-image-store.s3.amazonaws.com/0/324255/80c37dd3-8994-4ee8-915a-4c4ddb5b7486.png)

ここは心配なのでログを確認します(笑)
![23.png](https://qiita-image-store.s3.amazonaws.com/0/324255/265ad3f1-18b0-4a9b-48c1-ad5c526c01fe.png)
![24.png](https://qiita-image-store.s3.amazonaws.com/0/324255/86400635-7663-f3e8-9442-5f8ee906ac1e.png)
ログが止まったと思ったら…minishiftがクラッシュ( ;∀;)
Console画面も表示できなくなってしまった（泣

```bash
$ minishift stop
$ minishift start
```

(-。-)y-゜゜゜

改めてログを確認
![25.png](https://qiita-image-store.s3.amazonaws.com/0/324255/6390d25c-9eb8-9b15-3648-fb21e54a4409.png)
うまく行ってそうですね♪

# WordPress用にRouterを作成する
このままではWordPressにブラウザからアクセスできないのでRouterを作成します。
Applications＞Routersをクリック
![26.png](https://qiita-image-store.s3.amazonaws.com/0/324255/a8c34021-4dca-0ac3-9b41-c8f372fec092.png)

中央にデカデカとある「Create Route」をクリック
![27.png](https://qiita-image-store.s3.amazonaws.com/0/324255/103dc00f-ee72-d990-ac10-5406bc5b1299.png)

Nameに`wordpress-rt`と入力し、
Serviceで`wordpress-nginx-php7`を選択し、Createをクリック
![28.png](https://qiita-image-store.s3.amazonaws.com/0/324255/2b83d0e4-5027-2fc6-f776-444add578d3b.png)

Hostnameに表示されているURLがブラウザからアクセスするURLになります。

# 祝・WordPress+MariaDB!
URLをクリックするとWordPress画面が表示されました！

![30.png](https://qiita-image-store.s3.amazonaws.com/0/324255/d6f2bb36-2b48-249b-da77-b84b1b50d217.png)

# 後からEnvironment Variablesを変えたくなったら
ブログ名が「USER'S BLOG」
「[README & Configuration Options](https://github.com/bitnami/bitnami-docker-wordpress-nginx/blob/master/README.md)」をもう一度よく見ると環境変数ですね...

|Variable|Description|Default|
|:--|:--|:--|
|**WORDPRESS_USERNAME**|WordPress application username.|user|
|**WORDPRESS_PASSWORD**|WordPress application password.|bitnami|
|**WORDPRESS_EMAIL**|WordPress application email.|user@example.com|
|**WORDPRESS_FIRST_NAME**|WordPress user first name.|FirstName|
|**WORDPRESS_LAST_NAME**|WordPress user last name.|LastName|
|**WORDPRESS_BLOG_NAME**|WordPress blog name. Default|User's blog|

簡単にブログ名とかユーザを変更してみましょう。

Applications＞Deploymentsをクリック
![40.png](https://qiita-image-store.s3.amazonaws.com/0/324255/e61c01c5-dd8d-7792-148e-acbcae93087b.png)

WordPressのPodのLast Version(画像では#3)をクリック
![41.png](https://qiita-image-store.s3.amazonaws.com/0/324255/43eb53e6-ebf8-c6dd-ed0b-93e46eabc4d9.png)

Environmentタブをクリック
Environment variables can be edited on deployment config wordpress-nginx-php7. のリンクをクリック
![42.png](https://qiita-image-store.s3.amazonaws.com/0/324255/8d2c6965-9dff-a258-c89e-9b2bdcec7a75.png)

Add Valueを設定する環境変数分クリックして枠を追加し投入します。
![43.png](https://qiita-image-store.s3.amazonaws.com/0/324255/4c7f0320-ad18-f95d-f1dd-eabd3cadb3b1.png)
![44.png](https://qiita-image-store.s3.amazonaws.com/0/324255/081c0dff-269a-5f62-166e-f355c798973d.png)
設定が終わったら[Save]をクリックするとDeployが走りなおします。(#3から#4へ)

これで変わる予定だったのですが、またしてもminishiftクラッシュ( ;∀;)
(-。-)y-゜゜゜
![45.png](https://qiita-image-store.s3.amazonaws.com/0/324255/d09ca257-88cb-66ca-02a5-48176a2fba7b.png)
不思議なことにWordPressはF5で更新できて「TAK'S BLOG]に代わってました！
ただし、一緒に指定したWordPressのユーザは反映できていない中途半端な状態

一度マシンをRebootして再度Deployですな...。PCのメモリ追加したら治るかな!?