WordPress on OCI Container Instances

2022年12月に GA となった OCI Container Instances を利用して、WordPress を動かしてみようと思います。

# What is OCI Container Instances ?

OCI Container Instances は、コンテナ用に最適化されたサーバレス・コンピューティングでアプリケーションを実行できます。ダッシュボード（Web UI）からコンピュートシェイプ、リソース割り当て、ネットワーク構成をプロビジョニングして、複数のコンテナをローンチできます。
Kubernetes をはじめとするコンテナ・オーケストレーション・プラットフォームを必要としないコンテナベースのワークロードに適したサービスです。

料金については、OCI Compute と同価格の CPU とメモリーリソースに対して発生します。

本記事では、以下  **Reference Architecture**  にある、OCI Container Instances 上で WordPress をデプロイする流れを辿ってみます。

![oci-container-instance-wordpress.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/9ddf9727-d4dc-46d6-f754-f97e2aafec06.png)

- [Container Instances Product Page](https://www.oracle.com/cloud/cloud-native/container-instances/)
- [Reference Architecture](https://docs.oracle.com/ja/solutions/oci-container-instances-for-containerized-applications/) 

# Provisioning

実際に環境構築を行います。

ハンバーガーメニューをクリックします。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/1a899b47-29e3-931b-a25a-4055b9466393.png)
「開発者サービス」-「コンテナ・インスタンス」を選択します。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/dc6adc92-acae-b10c-b1e2-8e76e32dfe51.png)
「コンテナ・インスタンスの作成」ボタンをクリックします。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/c0216b0a-fc7d-5627-2354-f95485e70650.png)
以下画像赤枠の箇所を変更します。それ以外はデフォルト値にしています。
- 「名前」：container-instance-wordpress
- 「メモリー量（GB）を選択します」：4
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/a5b0076e-f717-7b84-747b-d5ca0a29208d.png)
以下画像赤枠の箇所を変更します。それ以外はデフォルト値にしています。
- 「ホスト名 オプション」：wordpress
- 「コンテナ再起動ポリシー」：常時
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/f07e1bb0-b038-21c1-8eda-a3f4e42fc2d2.png)
「次」ボタンをクリックします。
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/8fb924ff-0b69-18bf-2744-00471a24ebbe.png)
WordPress のデータベースを構成する MySQL イメージを設定します。最初に、「Name オプション」を「db」と入力します。そして、「イメージの選択」ボタンをクリックします。
- 「Name オプション」：db
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/3d0d7e73-bb16-00de-582e-33050a739998.png)
「外部レジストリ」タブを選択して、以下の設定を行います。
- 「イメージ」：mysql
- 「タグ」：8.0.30
タブですが、「OCIコンテナ・レジストリ」は、OCI のコンテナレジストリ（OCIR）に格納されているイメージを設定できます。「外部レジストリ」は、パブリックサービスなどのコンテナレジストリを設定できます。デフォルトでは、Docker Hub となっています。
「別のレジストリを選択してください」のチェックボックスを有効にすると Docker Hub 以外のコンテナ・レジストリを設定できます。ここでは、「別のレジストリを選択してください」のチェックボックスを無効として、デフォルトの Docker Hub にある MySQL の公式コンテナイメージを使用します。
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/5badd929-5e71-e6ef-0e03-8b0f5f4fc62c.png)
「イメージの選択」ボタンをクリックします。
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/9d5b572c-ae9e-707a-ec29-d78c273698e2.png)
以下の環境変数を設定します。WordPress 用のデータベース設定です。最初に、「+ 別の変数」ボタンを3回クリックして、その後設定値を入力します。
- 「MYSQL_ROOT_PASSWORD」：somewordpress
- 「MYSQL_DATABASE」：wordpress
- 「MYSQL_USER」：wordpress
- 「MYSQL_PASSWORD」：wordpress
次に「拡張オプションの表示」テキストをクリックします。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/a00eb9e9-3283-2b28-7dc5-d2d9f392a7f7.png)
「リソース」タブでは、コンテナで消費されるリソース量を指定できます。ここでは、デフォルト値とします。次に「起動オプション」タブを選択します。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/727c3a8b-b06b-8637-0f2e-3d6fd29310fa.png)
MySQL 8.04 以降、caching_sha2_password プラグインを利用した認証方式がデフォルトとなりました。ここでは、従来の認証方式のプラグイン mysql_native_password に変更します。
- 「エントリポイント引数」：--default-authentication-plugin=mysql_native_password
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/d72e47a5-5ffa-dc3e-51d4-e17db5a1bd18.png)
「+ 別のコンテナ」ボタンをクリックします。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/b0926115-7f40-e93a-4f0c-c7a29fbe3968.png)
次は、wordpress アプリケーションのコンテナイメージの設定を行います。「Name オプション」を「app」と入力します。そして、「イメージの選択」ボタンをクリックします。
- 「Name オプション」：app
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/4f0ef594-a9a6-1fa6-065b-2237d9a840c2.png)
「外部レジストリ」タブを選択して、以下の設定を行います。WordPress は latest のコンテナイメージを利用するため、タグの指定はしません。
- 「イメージ」：wordpress
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/9a51cacb-b657-167b-e2d1-5d847fc451f7.png)
「イメージの選択」ボタンをクリックします。
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/9d5b572c-ae9e-707a-ec29-d78c273698e2.png)
以下の環境変数を設定します。WordPress アプリケーションが MySQL に接続するために必要な設定です。最初に、「+ 別の変数」ボタンを3回クリックして、その後設定値を入力します。
- 「WORDPRESS_DB_HOST」：127.0.0.1
- 「WORDPRESS_DB_USER」：wordpress
- 「WORDPRESS_DB_PASSWORD」：wordpress
- 「WORDPRESS_DB_NAME」：wordpress
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/79703615-d42b-fb4a-6ee5-e317b38c1e59.png)
「次」ボタンをクリックします。
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/2ff8ea7f-60a4-bfa1-04b2-ffcdfdc9981c.png)
設定内容を確認します。
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/41b8df92-de03-b1f3-3ce5-a10e725a44ba.png)
「作成」ボタンをクリックします。
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/58d512de-5b88-2ff3-dfaa-e3266b8337ec.png)
設定した app と db のコンテナが作成されます。
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/b37b2678-82d1-9639-8e5d-9d63810c6c1f.png)

# Create Netowrk Security Group
デフォルトでは、80ポートを使用したWebアクセスが許可されていないので、ネットワーク・セキュリティ・グループを作成して、ブラウザからアクセスできるように設定します。
ハンバーガーメニューをクリックします。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/1a899b47-29e3-931b-a25a-4055b9466393.png)
「ネットワーキング」-「仮想クラウド・ネットワーク」を選択します。
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/102624e2-9183-61bd-1c6d-43520265ea97.png)
対象の VCN を選択します。
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/a5949d5d-0424-6b93-78c9-d02d90c68b89.png)
左にあるリソースメニューから「ネットワーク・セキュリティ・グループ」を選択します。
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/4fe3454d-45d1-a0f0-2a26-b8bf77d1b9c5.png)
「ネットワーク・セキュリティ・グループの作成」ボタンをクリックします。
![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/1f999fa2-4443-ded0-98bd-79ab4bb030bf.png)
以下の設定を行います。
- 「名前」：container-instances
![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/3320168c-00ea-0981-0a53-921dc85ab8e4.png)
「次」ボタンをクリックします。
![26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/4e4a5301-dbfc-2dfb-90f2-65c3e2fa514d.png)
以下の設定を行います。
- 「ソース・タイプ」：CIDR
- 「ソースCIDR」：0.0.0.0/0
- 「IPプロトコル」：TCP
- 「ソース・ポート範囲」：All
- 「宛先ポート範囲」：80
![27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/ca33df56-7ed3-c6c2-4f73-475501cff7ca.png)
「作成」ボタンをクリックします。
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/031bcb4f-3fd1-4987-3f99-857154a72a8b.png)
設定されたことを確認します。
![28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/8f121133-21c3-348f-3a17-d9d903cee707.png)
作成したコンテナ・インスタンスに、このネットワーク・セキュリティ・グループを適用します。
ハンバーガーメニューをクリックします。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/303f8a66-3c15-1eca-95aa-16de2777d1dc.png)
「開発者サービス」-「コンテナ・インスタンス」を選択します。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/dc6adc92-acae-b10c-b1e2-8e76e32dfe51.png)
対象のコンテナ・インスタンスを選択します。
![29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/d879f62e-bf26-5cc8-f7f9-a41ac8e56c45.png)
「編集」リンクテキストをクリックします。
![30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/8c7ca1ab-a457-b18d-c39a-0be143715bd3.png)
作成したネットワーク・セキュリティ・グループ「container-instances」を選択して、「変更の保存」ボタンをクリックします。
![31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/0ee6f039-23ef-965a-c303-1f0f0ec6ce8d.png)
「パブリックIPアドレス」の「コピー」リンクテキストをクリックします。
![32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/3c0d8348-c8bd-58ff-1190-c158dcd91f0c.png)
ブラウザを起動してコピーしたパブリックIPアドレスにアクセスして、WordPress 初期セットアップ画面が表示されることを確認します。
![33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/2ccf5d72-a172-fb16-4e05-8d33b0fc4e94.png)

# WordPress Set Up
「日本語」を選択して、「次へ」ボタンをクリックします。
![33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/8c05f528-925e-36cf-ac12-4560cd00182f.png)
任意の情報を設定して、「WordPress をインストール」ボタンをクリックします。
![34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/44fd8e14-cbb8-9901-8dae-15c42863f970.png)
「ログイン」ボタンをクリックします。
![35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/d2d53663-2d1c-77c9-59ea-860c651e32c7.png)
設定した、ユーザー名とパスワードを入力して、「ログイン」ボタンをクリックします。
![36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/93a94968-8a06-9507-115a-6802d6c7a41c.png)
以下の画面が表示されれば完了です。
![37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/1027ae24-6802-c58e-f6e1-6230f2c41424.png)
再度パブリックIPアドレスにブラウザでアクセスすると、デフォルトのブログ画面が表示されます。
![38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/15862bd9-ae1a-6848-93b2-1bc7e52c1f82.png)

OCI Container Instances で WordPress を動かすことができました。削除については、コンテナ・インスタンスと作成された VCN の削除です。