Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...Masaya Aoyama
Kubernetes Meetup #9 @CyberAgent は KubeCon + CNCon 2017 North America Austin の Recap スペシャルということで、「Deploying to Kubernetes Thousands of Times Per Day」 についてお話させていただきました。
High Velocity の重要性と、CI/CD Pipeline を作るときに注意するべきポイントを話した上で、CodeFresh について紹介しました。
Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kuber...Masaya Aoyama
Kubernetes Meetup #9 @CyberAgent は KubeCon + CNCon 2017 North America Austin の Recap スペシャルということで、「Deploying to Kubernetes Thousands of Times Per Day」 についてお話させていただきました。
High Velocity の重要性と、CI/CD Pipeline を作るときに注意するべきポイントを話した上で、CodeFresh について紹介しました。
17. 【補足】 Dockerfile best practice
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#leverage-
build-cache
の中で今回説明したもの
Use multi-stage builds
◦ マルチステージビルドを使う
Leverage build cache
◦ 変更されやすいものほど最後に書いて、キャッシュが効くようにする
(書いていないが説明したもの)
アプリケーションのコンパイルもDockerコンテナ内で完結させる
◦ ホストでコンパイルすると、環境依存になる
◦ 特にDockerビルドを行うクラウドサービスを使うとき、SDKがない場合がある
18. 【補足】マルチステージビルド
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS publish
WORKDIR /src
COPY . .
RUN dotnet publish MyWebApp.csproj -c Release -o /app
FROM base As final
WORKDIR /app
COPY --from=publish /app /app
ENTRYPOINT [ "dotnet", "MyWebApp.dll" ]
aspnet:2.2
base
sdk:2.2
publish
Runtimeのみ、軽量
SDK入り。重い。
ネットワーク設定等
dotnet publish
ENTRYPOINT
COPY ビルド成果物
こちらが最終的なdockerイメージ
こっちは使われない
csproj
など一式
final