Container

CircleCIでDockerをビルドしてAWS ECRにPushする

Introduction

こんにちは.
CI/CDやってますか?

最近,ReactでSPA作ってます.
Dockerコンテナで動かしているのですが,ホスティングサービスをどこにしようかなと.
Herokuも考えたのですが,無料枠だと起動に時間がかかるので却下しました.
本サイトがAWSのlightsailで動いているので,そこでDockerコンテナも動かすことにしました.
CIは実現できましたが,CDは面倒くさいのでやってません.
(lightsailでAPI動かして,Hookすればいけますが面倒くさい..)

Dependency

  • AWS,github,CircleCIのアカウント作成済み
  • ECR作成済み
  • aws cliちょっと使える
  • githubにリポジトリ作成済み

TRY!!

Connect github and CircleCI

CircleCIにログインして,Githubのリポジトリと紐づけます.

Add Environment Variable in CircleCI

AWSのクレデンシャル情報をCircleCIの環境変数としてセットします.

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_DEFAULT_REGION
  • AWS_ACCOUNT_ID
  • AWS_RESOURCE_NAME_PREFIX

AWS_ACCOUNT_IDとAWS_RESOURCE_NAME_PREFIXはリポジトリ情報から取得します.
ECRを作成すると下記のようなURLが生成されます.
XXXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/your_resource_name

AWS_ACCOUNT_IDはXXXXXXXXXXXXXの部分,AWS_RESOURCE_NAME_PREFIXはyour_resource_nameを環境変数にセットしてください.

Create .circleci/config

gitのプロジェクトルート直下に,今回の肝である  .circleci/config ファイルを作成してください.

依存関係,テストは考慮していないのでシンプルになっています.
またbranchでフィルターもかけていないので,masterブランチもdevelopブランチもどちらもビルドするようになっています.

Push SorceCode to github

ではソースコードをpushしましょう.

こんな感じでDockerのビルド,ECRへのデプロイが完了します.

Reference

CircleCI で Docker イメージをビルドして Amazon ECR に push するまでのハンズオン - ようへいの日々精進XP
tl;dr やんなきゃいけないこと やったこと リポジトリ Dockerfile goss.yaml .circleci/config.yml 実際に 以上 参考 tl;dr Docker のコンテナイメージを AWS の CodePipeline や CodeBuild を介して, コンテナレジストリ (ECR) に push する流れを実装したくて, 色々と調査していましたが, とりあえず, CircleCI で実施してみたらどうなるだろうと思ってドキュメントなどを参考にハンズオンしてみました. やんなきゃいけないこと コンテナレジストリにコンテナイメージを push するにあたって, 以…

-Container
-, , ,

Translate »