SinatraアプリのHello world on Docker with Alpineの続きです。
前書き
前回作ったSinatraアプリのコンテナを、Amazon EC2 Container Services (以下、ECS) にデプロイ出来るようにしたいと思います。 ECSから自分のイメージを使えるようにするためには、どこかしらのレジストリにイメージを配置する必要があります。
イメージの置き場所について
ECSから読めればどこでも良い(自前のリポジトリも可?)ですが、 最も一般的なのはAmazon本家のEC2 Container Registry(ECR)です。
今回は、手軽に無料で使えるDocker Hubを使いますが、無料では公開リポジトリしか置けないですし、 ECRにイメージを置いておけば、同一リージョン内からのイメージのpull、すなわちEC2へのデプロイで料金が発生しないので、ECSを使う上では非常にお得です。
ECRの料金は次の項目で発生します。
- ストレージ料金 => 0.10 USD/GB/月
- イン(Push) => 0円
- アウト(同一リージョン外からのPull) => 最初の1GB無料、それ以降 0.140 USD/GB (月に10TBまでの場合)
気軽に試す分には、維持費のかからないDocker Hubでもいいかなと思います。
手順
1.Docker Hubにリポジトリを作る
今回は、syumai/sinatra-alpineとしました。
2.タグ付きでビルド
docker build -t syumai/sinatra-alpine:0.1.0 ./
3.Docker Hubにログイン
docker login (ユーザー名、パスワードの入力)
4.Pushする
docker push syumai/sinatra-alpine:0.1.0
Push完了!
Pushしたイメージを確認する
Pushしたイメージは、Docker Hub上の自分のページに、あれ、見つからない…。
でもdocker pull syumai/sinatra-alpine:0.1.0
は動くので、Pushは成功しているっぽいです。
どっか間違ったのか時間差があるのでしょうか…。また明日確認してみます。
次回は、こちらのアップロードしたイメージ or ECRを使ってECSにデプロイしてみます。
追記(2017/1/14)
6時間後くらいに見たら、ちゃんとDocker Hubのページに反映されていました。