Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS CodeBuildカスタムDockerイメージを使ってビルドする

Af69fded2a15dd190a70f4245e6d1d9f?s=47 tiibun
July 21, 2017

AWS CodeBuildカスタムDockerイメージを使ってビルドする

Af69fded2a15dd190a70f4245e6d1d9f?s=128

tiibun

July 21, 2017
Tweet

Other Decks in Programming

Transcript

  1. AWS CodeBuild カスタムDockerイメージ を使ってビルドする JAWS-UG コンテナ⽀部#9 2017-07-21 (株)オープンストリーム 飯分俊⾏(いいぶんとしゆき)

  2. CodeBuildとは u ざっくりいうと、 CodePipelineと組み合わせて CI/CDを実現するJenkins CIのようなもの u ビルドにかかった時間に対して料⾦が発⽣

  3. ソースを取得して u Amazon S3, CodeCommit, GitHubのソースをビルド

  4. ビルドはDocker上で u ランタイム(何をビルドするか) u Base u Android u Java u

    Python u Ruby u Golang u Node.js u Docker u .Net Core
  5. buildspec.ymlに従ってビルド u YAMLでコマンドを定義 u ソースの直下に配置 (場所、名前は変更可能)

  6. 本⽇話す内容 u ビルド環境を⾃前で⽤意す る⽅法 u 環境イメージで “Dockerイメージの指定” を指定 u 対象のランタイムは

    Docker u ⽤意されたバージョンが少 し古く、”—cache-from” オプションを使えなかった ので最新のdockerを使え るようにした
  7. 参考にした公式ドキュメント u Docker in Custom Image Sample for AWS CodeBuild

    u http://docs.aws.amazon.com/codebuild/latest/userguide/sam ple-docker-custom-image.html u ⽇本語にはまだない
  8. 公式ビルド環境のDockerfile u GitHubに各ランタイムのDockerファイルがある u https://github.com/aws/aws-codebuild-docker-images/ u Dockerランタイム u https://github.com/aws/aws-codebuild-docker- images/tree/master/ubuntu/docker/1.12.1/

    u Ubuntu 14.04ベース u aws-cli, git, dind(Docker in Docker)をインストール u ENTRYPOINTでDockerデーモンを起動
  9. ビルド環境イメージ を作成 u docker:dindベース u aws-cli, gitをインストール u ENTRYPOINTはdocker:dind のまま

    u dockerデーモンを起動
  10. カスタムイメージをAmazon ECRにアップ 事前にECRにカスタムイメージ⽤のリポジトリを⽤意して

  11. ビルドするサンプルプログラム u このDockerfileと次 に説明する buildspec.ymlのみ u ビルド中に Hello と 出⼒するだけ

  12. buildspec.yml

  13. buildspec.yml (1/3) u 0.1と0.2では⼤きな違いがあり、0.1にしているとはまる u 公式ドキュメントのビルドスペックリファレンスの⽇本語版はまだ 0.1なので注意

  14. buildspec.yml (2/3) u dockerデーモンを起動して起動するまで待つ u 提供されているDockerランタイムを指定する場合は不要 u dockerデーモンが⾃動で起動するらしい u ちなみにGitHubの公式イメージを⾃分でビルドしたイメージを指定して

    もこの記述が必要だった
  15. buildspec.yml (3/3) u ビルドしてECRにアップ u REPOSITORY_URI はビルドプロジェクト作成時に指定 u ECRにアクセスするロールが必要

  16. CodeBuild⽤ロール作成 (1/2) u サービスロールは”AWS CodeBuild”を指定

  17. CodeBuild⽤ロール作成 (2/2) u ポリシーで”AmazonEC2ContainerRegistryPowerUser”を指定

  18. ビルドプロジェクトを作成 (1/6)

  19. ビルドプロジェクトを作成 (2/6) u Dockerイメージの指定 u ビルド環境イメージをプッ シュしたECRレポジトリ、 イメージを指定

  20. ビルドプロジェクトを作成 (3/6) u ECRにプッシュするので出⼒アーティファクトはなし

  21. ビルドプロジェクトを作成 (4/6) u ロールは先ほど作ったロールを指定

  22. ビルドプロジェクトを作成 (5/6) u Dockerイメージを構築するので特権付与にチェック

  23. ビルドプロジェクトを作成 (6/6) u Buildspec.ymlで使う環境変数を指定

  24. ビルドを開始

  25. 結果 (1/2)

  26. 結果 (2/2)

  27. まとめ u 何かの参考になれば幸いです u CodeBuildの戦いはまだ始まったばかりだ! u ⽇本語スタッフの⽅もがんばってください! u Qiita( http://qiita.com/tiibun/items/f0045011c86efca254fc

    )にもあ るので参考にしてください u ご静聴ありがとうございました