【AWS備忘録】AWS Fargateで「WordPress」ってやつを動かしてみる①(GUIのみ)
こんにちはこぐまです。
書きたい記事はたくさんあるけどなかなか進まないここ最近です。
頑張ってたくさん書きたい・・。
さて、久しぶりにECS(Fargate)のお話です。
Fargateといえば、AWSのECSの基盤部分の運用をまるっとお任せできるコンテナオーケストレーションサービスですね。
最近性能も上がってきたみたいで(なんかのセミナーで聞いた気がする)、
結構コンテナでは人気のサービスのような気がしています。
しかし、実際サクッとWordPressを動かしてみようかなと思ったら、かなり苦戦しました・・。でも、たくさんいろんなこと知りました。
なので本日のテーマは、
「もうこの通りやれば、とりあえず「AWS Fargate」で「WordPress」動かせるよ!」
ってのを書いてまとめてみようと思います。
準備するもの
1.AWSアカウント
すでにこのNoteをここまで読んで下さっている方はAWSアカウントをお持ちの方がほとんどだと思いますが、もしまだの場合は、以下の記事からお読みいただければと思います。
2.好奇心
かなり大事!手を動かして得られる経験はプライスレス!
上記以外は不要です。
また、今回リージョンとしては「大阪リージョン」を使ってみようと思います!(大阪リージョンで既に作成したリソースがない前提でお話ししますね)ではいきましょう!
1.クラスター作成まで
1-1.AWSマネジメントコンソールにログインし、右上のタブから「大阪」リージョンを選択する。
1-2.検索欄に「ECS」と入れて「Elastic Container Service」をクリックする。
1-3.左メニューから「クラスター」を選択する。
1-4.「クラスターの作成」をクリックする。
1-5.「ネットワーキングのみ」が選択されているので、そのまま「次のステップ」をクリックする。
1-6.とりあえず以下のようにクラスター属性を埋めていく
ここから少し入力項目があったりします。
クラスター名:「test-wordpress-cluster」
VPCの作成:チェックつける
CIDRブロック:チェック付けた後に表示される値のまま
タグ:何もなし
Container Insightsを有効にする:チェックなしでOK
しばらく待つと、「ECSクラスター」「CloudFormationスタック」というものが両方緑になります。
これでクラスターの作成は完了です。
2.タスク定義の作成
ここがキモです!
そしていざ手を動かしてみるといろんなところで躓いて、いろんな発見がありました。それらをまとめていきたいと思います。
2-1.画面左のメニューから「タスク定義」を選択する。
2-2.「新しいタスク定義の作成」をクリックする。
2-3.「FARGATE」が選択されている状態で、「次のステップ」をクリックする。
2-4.タスク定義の最初の部分を設定していく
ここは少し長いので、ゆっくり順番に行きます。
まず最初の「タスクとコンテナの定義の設定」から。
タスク定義名:「test-task」(別に何でもいいです!)
タスクロール:「ecsTaskExecutionRole」 (プルダウンからこれを選んでください)
オペレーティングシステムファミリー:「Linux」(プルダウンからこれを選んでください)
続いて、「タスクの実行IAMロール」と「タスクサイズ」です。
タスクの実行IAMロール:「ecsTaskExecutionRole」(たぶんそのまま入っていると思います。)
タスクメモリ:1GB
タスクCPU(vCPU):0.5vCPU
2-5.「コンテナの定義」のポップアップを開く
つづいて「コンテナの定義」です。まずコンテナの追加を押下します。
そうするとこんな感じでポップアップ?が出てきます。
この必要な部分を入力していきます。
2-6.「mysql」コンテナの定義を作っていく
今回は「1つのタスク」の中に「2つのコンテナ」を作ります。
2つのコンテナとは、
「wordpress-con(いわゆるwordpressアプリ本体)」
「mysql-con(wordpressが必要とするデータベース)」
です。2つのコンテナは「一組のタスク」として先ほど作成したクラスター上で動きます。
まずはDB側の「mysql-con」というコンテナの定義を作っていきます。
(コンテナという意味を込めて、-conと付けましたが、別にコンテナの名前は何でもよいです。)
「スタンダード」という部分で入力するのは3つだけです。
コンテナ名:「mysql-con」
イメージ:「mysql」(mysqlとだけ書きます。これだけでDockerHubから公式のmysqlイメージを持ってきてくれます。)
ポート:3306
続いてヘルスチェックの部分です。
ここは、コマンドの枠の中に、
一字一句間違わず、以下のように入れてください。(超大事!)
(いろいろ変更することもできますが、とりあえずまずは以下のまま入れてください。)
CMD-SHELL , mysqladmin ping -u testuser -ptestpass -h 127.0.0.1 || exit 1
そのほか、間隔、タイムアウト、開始期間、再試行がありますが、
それぞれ以下のように入力してください。
そして、もう少し下のほうにある、「環境変数」という場所で、
それぞれ以下のように入力します。
ここも、(最初は)一字一句間違えないように入力してください。
MYSQL_DATABASE Value wordpress
MYSQL_PASSWORD Value testpass
MYSQL_ROOT_PASSWORD Value rootpass
MYSQL_USER Value testuser
上記以外は何も変更せずそのままで大丈夫です。
下までスクロールし、「追加」をクリックください。
コンテナの定義として「mysql-con」が追加されました。
2-7.「wordpress」コンテナの定義を作っていく
続いて、もう一つのコンテナ「wordpress-con(いわゆるwordpressアプリ本体)」の定義を作っていきましょう。
同じく、コンテナの追加をクリックします。
スタンダードのところで、以下のように入力していきます。
コンテナ名:「wordpress-con」
イメージ:「wordpress」(wordpressとだけ書きます。これだけでDockerHubから公式のwordpressイメージを持ってきてくれます。)
ポート:80
下にスクロールしていき、環境変数の部分です
なお、wordpress-con側ではヘルスチェックの設定は不要です。
WORDPRESS_DB_HOST Value 127.0.0.1
WORDPRESS_DB_NAME Value wordpress
WORDPRESS_DB_PASSWORD Value testpass
WORDPRESS_DB_USER Value testuser
環境変数のすぐ下に、「スタートアップ依存順序」というのがあります。
コンテナ名のプルダウンから「mysql-con」を選択し、
状態として「HEALTHY」を選択してください。
上記以外は何も変更せずそのままで大丈夫です。
下までスクロールし、「追加」をクリックください。
2-8.タスク定義の一番下までスクロールし、「作成」をクリックする。
他にも設定できる部分はありますが、今回は利用しません。
一番下までスクロールし、「作成」をクリックします。
これで準備完了です!
長くなってきましたので続きは②で書きます!
ここまで読んで下さってありがとうございました。