前回の記事(http://qiita.com/ms_os_pssb/items/fa434ed1d61ca8256a99)
に引き続き、カスタムしたredmineのdockerを動かすためにAWS側の設定をしていきます。
大きな流れ(復習)
1.Dockerfileを用意
2.AWSにてElastic Container Service(ECS)のタスクを定義
3.ECSのインスタンスを用意
今回は2を行います。
2.AWSにてElastic Container Service(ECS)のタスクを定義
見出しはタスクの定義としてますが、実際にはこんな作業が必要です。
なお、Redmineで使用するデータベースはRDS(MySQL)を利用しています。
(MySQLの用意方法は割愛)
2.1. Amazon EC2 Container Registryにdockerイメージの格納場所を用意
2.2. ローカルの端末でDockerfileをビルドし、2.1にて作成したRegistoryにpushする。
2.3. ECSのタスク定義にてpushしたイメージをつかうよう設定したタスク定義を作成
2.1 Amazon EC2 Container Registryにdockerイメージの格納場所を用意
- 管理コンソールより、「EC2 Container Service」→「リポジトリ」→「リポジトリの作成」ボタンをクリック。リポジトリ名を入れ、作成完了
2.2. ローカルの端末でDockerfileをビルドし、2.1にて作成したRegistoryにpushする。
上記にて完了画面に出てきたコマンドをローカルで実施。Dockerfileのビルドとregistoryへのpushを行う。
#事前にaws configにてローカル端末にawsアカウントを設定していること
aws ecr get-login --region (リージョン名)
# dockerfileおよびdocker-entrypoint.shファイルがあるフォルダ上で実施
docker build -t redmine .
docker tag redmine:latest xxxxxx(awsアカウント+region).amazonaws.com/redmine:latest
docker push xxxxxx(awsアカウント+region).amazonaws.com/redmine:latest
2.3 ECSのタスク定義にてpushしたイメージを使うように設定したタスク定義を作成
-管理コンソールより、「EC2 Container Service」→「タスク定義」→「新しいタスク定義の作成」を選択する。
-「コンテナを追加」より、詳細内容を入力
実際に動作しているものをキャプチャします。
ポイント
- タスク定義名→適当、タスクロール→なしでOK
- コンテナイメージに先ほどpushしたイメージのパスを貼り付け
- メモリ→512MBもあれば十分。
- ポートマッピング→3000portで動作するイメージのため、ホスト側の80とマッピング
- マウントポイント→configの内容(database.yml)を置く場所と、添付ファイルを置くフォルダをホスト側のディレクトリにマッピングするために設定する。ボリュームにてホスト側のディレクトリのソースパスを指定したものを用意し、マッピングにて設定する。
- ログ設定でcloudwatchのロググループを指定している。例ではあらかじめ「redmine-log」というロググループを作成し、それを指定している。
ようやくDockerのイメージの動作定義まで出来たので最後にイメージを動かすインスタンス(EC2)の用意をします。
(次回/最終回に続く)