ECS + ALB でダウンタイムなしでデプロイ
ECS + ALB でダウンタイムなしでデプロイ
Docker
ローカル環境(Mac)には、Docker for Macをインストールして起動しておく。
$ vim DockerfileFROM ruby:2.3.1
ENV APP_ROOT /usr/src/testapp
WORKDIR $APP_ROOT
RUN apt-get update && \
apt-get install -y nodejs \
--no-install-recommends && \
rm -rf /var/lib/apt/lists/*
COPY Gemfile $APP_ROOT
COPY Gemfile.lock $APP_ROOT
RUN \
echo 'gem: --no-document' >> ~/.gemrc && \
cp ~/.gemrc /etc/gemrc && \
chmod uog+r /etc/gemrc && \
bundle config --global jobs 4 && \
bundle install && \
rm -rf ~/.gem
COPY . $APP_ROOT
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]http://localhost へアクセス
ECR
表示される -e none は除いて入力。
ECS
ダウンタイム0のデプロイのために、動的ポートマッピングを設定する。
動的ポートマッピングのために、ホストポートを0にする。コンテナポートはアプリケーションのポートに合わせる(Railsでは3000)
最小ヘルス率を50へ変更。
awslogs-groupで指定したCW Groupの値のものを作成してからでないと、ログドライバー: awslogs を設定すると、起動時に以下のエラー。
http://ecs-first-run-alb-1371717613.us-west-2.elb.amazonaws.com/ ALBのエンドポイントでアクセスできるようになる。
Rails
以下はコメントアウト
具体的な編集内容は以下の通り。
Rails.application.routes.draw do ~ end 内に以下を追加。
RSpec
group :development, :test do ~ end内に以下を追加。
以下を末尾に追記
以下を末尾に追加
$ vim spec/controllers/sample_controller_spec.rb
Docker Compose
Docker Composeを利用することで、Railsのコードを編集してもビルドし直さないと変更が反映されない事象は解消。
PreviousLambdaをローカルでテスト(with Docker)Next`Repository packages-microsoft-com-prod is listed more than once in the configuration`のメッセージの解消方法
Last updated