概要
前回の記事の後ECSでコンテナを動かそうとしましたが、Essential container in task exited
のメッセージがでてうまくコンテナが起動できず、またこちらのアプリを使って構築してみようとしましたが、同様にうまくいかなかったので、まずはこちらを参考にECSでコンテナを動かすところだけをまとめてみました。
タスク定義登録
- まずタスク定義を登録します。ここで使用するコンテナのイメージなどを設定します。AWSコンテナ設計・構築入門 のほうではFARGATEで作成していますが、今回はEC2で実施します。
- コンテナ作成を選択してイメージは
httpd
を設定します。ホストポートとコンテナポートはここでは80
にしていますが、docker run -dp
で指定するポートを設定します。
クラスターの作成
-
EC2 Linux+ネットワーキング
を選択します。インスタンスタイプは今回お試しなのでt3.micro
を指定します。
-
ネットワーキングは以前作っていたVPCを指定しています。サブネットも同様です。本来ならここでMulti-AZになるように複数サブネットを指定します。外部からつなげられるように確認するためセキュリティグループは作成していますが、事前に作成した方がよさそうです。
サービスの作成
- 最後にサービスを作成します。ここで起動するコンテナの数やロードバランサーの設定などを行います。今回は特に設定はしません。
- 前回のステータスが
RUNNING
になるまで待ちます。起動できないとここがPENDING
となってしまい最終的にStopped
の方に表示されます。
動作確認
最後に
実施しようと思った自分でECRに登録したコンテナの起動には失敗しましたが、ECSでの動かし方を整理することができました。
起動に失敗している原因を調べてうまく動かせるようになったらまた新たに記事を起こそうかと思います。
CloudWatchlogsでは以下のように出ていたのでコンテナ起動時に何か問題が起こっているようですが・・・
-----------------------------------------------------------------------------------------------------------
| timestamp | message |
|---------------|-----------------------------------------------------------------------------------------|
| 1643522208791 | internal/fs/utils.js:269 |
| 1643522208791 | throw err; |
| 1643522208791 | ^ |
| 1643522208791 | Error: ENOENT: no such file or directory, mkdir '/etc/todos' |
| 1643522208791 | at Object.mkdirSync (fs.js:921:3) |
| 1643522208791 | at Object.init (/app/src/persistence/sqlite.js:10:12) |
| 1643522208791 | at Object.<anonymous> (/app/src/index.js:17:4) |
| 1643522208791 | at Module._compile (internal/modules/cjs/loader.js:999:30) |
| 1643522208791 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) |
| 1643522208791 | at Module.load (internal/modules/cjs/loader.js:863:32) |
| 1643522208791 | at Function.Module._load (internal/modules/cjs/loader.js:708:14) |
| 1643522208791 | at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12) |
| 1643522208791 | at internal/main/run_main_module.js:17:47 { |
| 1643522208791 | errno: -2, |
| 1643522208791 | syscall: 'mkdir', |
| 1643522208791 | code: 'ENOENT', |
| 1643522208791 | path: '/etc/todos' |
| 1643522208791 | } |
-----------------------------------------------------------------------------------------------------------