RIT Tech Blog

株式会社RITのエンジニアが知見を共有する技術ブログです。

Headless CMSのStrapiをECSで運用してみる(後半)

rit-inc.hatenablog.com

↑の続きです

ECRにリポジトリ作る

とりあえずECRにリポジトリを作りましょう

f:id:rit-inc:20191216132313p:plain

f:id:rit-inc:20191216132447p:plain

URIを控えておきましょう

ビルド

ECRにpushするDocker imageをbuildします

PS C:\Users\tetsu\dev\new_blog> docker build -t <↑で控えておいたURI>:latest .
Sending build context to Docker daemon  527.4kB
Step 1/7 : FROM node:12
 ---> 11e92fc50c4a
Step 2/7 : COPY . /strapi
 ---> Using cache
 ---> d12f81986c35
Step 3/7 : WORKDIR /strapi
 ---> Using cache
 ---> 55776038dbb7
Step 4/7 : RUN yarn
 ---> Using cache
 ---> f4e982ccbbc1
Step 5/7 : RUN yarn build
 ---> Using cache
 ---> e986f88a755d
Step 6/7 : EXPOSE 8000
 ---> Using cache
 ---> bc4357547272
Step 7/7 : CMD ["yarn", "start"]
 ---> Using cache
 ---> 3e5b72ab37a0
Successfully built 3e5b72ab37a0
Successfully tagged <↑で控えておいたURI>:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

ECRにpush

ECRへのログインに関しては省略します

PS C:\Users\tetsu\dev\new_blog> docker push <↑で控えておいたURI>:latest
The push refers to repository [<↑で控えておいたURI>]
ddcc6d87877d: Pushed
e16bf0fde55b: Pushed
9b567c0e90e9: Pushed
16bf97960ee7: Pushed
190990e6fae4: Pushed
e44afd48b6d5: Pushed
799e7111d6d4: Pushed
a72a7e555fe1: Pushed
b8f8aeff56a8: Pushed
687890749166: Pushed
2f77733e9824: Pushed
97041f29baff: Pushed
latest: digest: sha256:9daa204795d9930d14f189041a05f8a355623b4684048fef7ff95db827b79f7d size: 2850

f:id:rit-inc:20191216133700p:plain

ちゃんとpushされてる

ECSでタスク作成

FARGATEで作ろう

f:id:rit-inc:20191216133835p:plain

f:id:rit-inc:20191216133957p:plain

f:id:rit-inc:20191216134717p:plain

f:id:rit-inc:20191216134746p:plain

f:id:rit-inc:20191216134805p:plain

設定はこんな感じ

f:id:rit-inc:20191216134849p:plain

できた

クラスター作成

fargateで

f:id:rit-inc:20191216215128p:plain

f:id:rit-inc:20191216215301p:plain

f:id:rit-inc:20191216215443p:plain

できた

タスク実行

f:id:rit-inc:20191216222500p:plain

アラートが出るのでswitch to launch typeでfargateに

VPCはデフォルトで、サブネットは適当に付けちゃいます

セキュリティグループはtcpの1337ポートを開けときましょう

パブリックIPの自動割当はとりあえずENABLED

f:id:rit-inc:20191216222554p:plain

f:id:rit-inc:20191216222703p:plain

f:id:rit-inc:20191216222821p:plain

起動しました

f:id:rit-inc:20191216222931p:plain

pendingからrunningに変わるまで待つ

f:id:rit-inc:20191216223044p:plain

runningになったのでpublic ipにアクセスしてみましょう

f:id:rit-inc:20191216223142p:plain

起動しています

これだと失敗っぽく見えちゃうので管理画面にもアクセスしてみる

f:id:rit-inc:20191216223226p:plain

うまくいってる

まとめと課題

  • 簡単にECSでstrapiのコンテナを実行することができた
  • DBだとかの設定には環境変数の変更が必要(タスクの定義で変えられる)
  • CI/CDにはもうひと工夫必要(commit hashとってきてタスク定義を更新するとか)

長々とECSについて書きましたが、最近はEKSやGKEなどのk8s活用にも力を入れているので、そのうちk8sでも構築してみたいですね

RITでは、様々な技術を活用してクライアントや自社サービスを作り上げることに興味のあるエンジニアを募集しています!

rit-inc.co.jp