Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SpringBootをコンテナで動かしてみる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kazuhiro Seo
February 09, 2020
Programming
450
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SpringBootをコンテナで動かしてみる
Kazuhiro Seo
February 09, 2020
Transcript
45 slides
SpringBoot を SpringBoot を コンテナで コンテナで 動かしてみる 動かしてみる SpringBoot を
- コンテナで - 動かしてみる
⾃⼰紹介 ⾃⼰紹介 妹尾 ⼀弘 札幌でシステム開発会社勤務 興味分野 AWS/ サーバーレス/Java SpringBoot を
- コンテナで - 動かしてみる
コンテナ コンテナ 使ってますか? 使ってますか? SpringBoot を - コンテナで - 動かしてみる
私は使ってません 私は使ってません SpringBoot を - コンテナで - 動かしてみる
最近のプロジェクトで 最近のプロジェクトで SpringBoot アプリを SpringBoot アプリを Docker で動かした話 Docker で動かした話
SpringBoot を - コンテナで - 動かしてみる
アジェンダ アジェンダ 1. なぜDocker を使うことになったか 2. SpringBoot をDocker 化する 3.
Docker Image を動かす SpringBoot を - コンテナで - 動かしてみる
#1 なぜDocker を使うことに #1 なぜDocker を使うことに なったか なったか SpringBoot を
- コンテナで - 動かしてみる
インフラはAWS Beanstalk インフラはAWS Beanstalk SpringBoot を - コンテナで - 動かしてみる
Java 11 を採⽤ Java 11 を採⽤ SpringBoot を - コンテナで
- 動かしてみる
Beanstalk がJava11 を未サポート Beanstalk がJava11 を未サポート (2020 年2 ⽉現在はベータ版で提供中) SpringBoot
を - コンテナで - 動かしてみる
Docker ならJava11 が動かせる! Docker ならJava11 が動かせる! SpringBoot を - コンテナで
- 動かしてみる
#2 SpringBoot をDocker 化する #2 SpringBoot をDocker 化する SpringBoot を
- コンテナで - 動かしてみる
イメージ作成〜デプロイの流れ イメージ作成〜デプロイの流れ SpringBoot を - コンテナで - 動かしてみる
Dockerfile Dockerfile SpringBoot を - コンテナで - 動かしてみる
From From SpringBoot を - コンテナで - 動かしてみる
Run Run SpringBoot を - コンテナで - 動かしてみる
Volume Volume SpringBoot を - コンテナで - 動かしてみる
Env Env SpringBoot を - コンテナで - 動かしてみる
Copy Copy SpringBoot を - コンテナで - 動かしてみる
Expose Expose SpringBoot を - コンテナで - 動かしてみる
Entrypoint Entrypoint SpringBoot を - コンテナで - 動かしてみる
Build Image Build Image $ docker build -t javado .
Step 1/12 : FROM amazoncorretto:11 ---> 2f2a640d4c1d Step 2/12 : RUN yum install -y glibc-langpack-ja ---> Using cache ---> a4ef6d211b52 Step 3/12 : RUN mkdir /app ---> Using cache ---> af5ba884f647 ... Step 10/12 : COPY build/libs/SampleApplication.jar /app/SampleApp ---> b615e2d76851 ... Successfully built a2e16070534a SpringBoot を - コンテナで - 動かしてみる
Build Image Build Image SpringBoot を - コンテナで - 動かしてみる
#3 Docker を動かす #3 Docker を動かす SpringBoot を - コンテナで
- 動かしてみる
AWS Elastic Beanstalk AWS Elastic Beanstalk AWS のPaaS サービス Platform
の1 つとしてDocker をサポート SpringBoot を - コンテナで - 動かしてみる
デプロイ⽅法は3 パターン デプロイ⽅法は3 パターン Docker Docker le のデプロイ コンテナレジストリから取得 MultiContainer
Docker SpringBoot を - コンテナで - 動かしてみる
Docker Platform の構成 Docker Platform の構成 SpringBoot を - コンテナで
- 動かしてみる
Dockerfile をデプロイして Dockerfile をデプロイして デプロイ先でdocker build デプロイ先でdocker build 実⾏定義ファイル Dockerrun.aws.json
を定義 Docker le と定義ファイルをzip にしてデプロイ ホストインスタンスでdocker build & docker run SpringBoot を - コンテナで - 動かしてみる
Dockerrun.aws.json Dockerrun.aws.json { "AWSEBDockerrunVersion": 1, "Ports": [ { "ContainerPort": 8000
} ], "Volumes": [ { "HostDirectory": "/var/log/app", "ContainerDirectory": "/app/logs" } ] } SpringBoot を - コンテナで - 動かしてみる
SampleApplication.zip SampleApplication.zip SampleApplication.zip / |- Dockerfile |- Dockerrun.aws.json |- build/
|- libs/ |- SampleApplication.jar SpringBoot を - コンテナで - 動かしてみる
コンテナレジストリから コンテナレジストリから 取得して実⾏ 取得して実⾏ ビルドしたイメージをレジストリにPush 実⾏定義ファイル Dockerrun.aws.json を定義 コンテナレジストリからイメージをPull SpringBoot
を - コンテナで - 動かしてみる
Container Registry Container Registry ビルドしたContainer Image を保存する場所 パブリックレジストリ Docker Hub
プライベートレジストリ private Docker Hab Elastic Container Registry (AWS) Azure Container Registry (Azure) SpringBoot を - コンテナで - 動かしてみる
ECR にリポジトリを作成 ECR にリポジトリを作成 SpringBoot を - コンテナで - 動かしてみる
ビルド済みのローカルの ビルド済みのローカルの コンテナにタグを付ける コンテナにタグを付ける $ docker tag javado:latest \ xxx.dkr.ecr.ap-northeast-1.amazonaws.com/javado:2020020901
SpringBoot を - コンテナで - 動かしてみる
ECR にPush ECR にPush $ docker push xxx.dkr.ecr.ap-northeast-1.amazonaws.com/javado:202 SpringBoot を
- コンテナで - 動かしてみる
Dockerrun.aws.json Dockerrun.aws.json { "AWSEBDockerrunVersion": 1, "Image": { "Name": "xxx.dkr.ecr.ap-northeast-1.amazonaws.com/javado:2020 },
"Ports": [ { "ContainerPort": 8000 } ], "Volumes": [ { "HostDirectory": "/var/log/app", "ContainerDirectory": "/app/logs" } ] } SpringBoot を - コンテナで - 動かしてみる
SampleApplication.zip SampleApplication.zip SampleApplication.zip / |- Dockerrun.aws.json SpringBoot を - コンテナで
- 動かしてみる
Multicontainer Docker の構成 Multicontainer Docker の構成 SpringBoot を - コンテナで
- 動かしてみる
Multicontainer Docker Multicontainer Docker 複数のコンテナを実⾏可能 docker-compose 相当の構成が出来る 実際にはECS が起動する SpringBoot
を - コンテナで - 動かしてみる
Dockerrun.aws.json Dockerrun.aws.json { "AWSEBDockerrunVersion": 2, "containerDefinitions": [ { "name": "springboot",
"image": "xxx.dkr.ecr.ap-northeast-1.amazonaws.com/javado:2 "essential": true, "memory": 1024, "portMappings": [ { "hostPort": 8000, "containerPort": 8000 } ], "logConfiguration": { "logDriver": "awslogs" SpringBoot を - コンテナで - 動かしてみる
デプロイ⽅法の違い デプロイ⽅法の違い SpringBoot 単独で動かすならDocker がシンプル Docker le 直接ならRegistry が不要 Registry
を使⽤する⽅法が汎⽤的 複数コンテナを動かしたいならMultiContainer SpringBoot を - コンテナで - 動かしてみる
コンテナ化しておけば コンテナ化しておけば 運⽤⽅法に関わらず 運⽤⽅法に関わらず 同じアプリが動作するので、 同じアプリが動作するので、 運⽤しやすい選択肢が選べる 運⽤しやすい選択肢が選べる SpringBoot を
- コンテナで - 動かしてみる
アプリの実⾏環境をコンテナに押し込むことで アプリの実⾏環境をコンテナに押し込むことで 実⾏環境と運⽤環境を切り離すことができる 実⾏環境と運⽤環境を切り離すことができる SpringBoot を - コンテナで - 動かしてみる
コンテナ コンテナ 使っていきましょう 使っていきましょう SpringBoot を - コンテナで - 動かしてみる
ありがとうございました ありがとうございました SpringBoot を - コンテナで - 動かしてみる
More Decks by Kazuhiro Seo
See All by Kazuhiro Seo
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
590
GitHub ActionsとAWSをOIDC認証で連携する
kazuhiro1982
1
260
Gradleとちょっと仲良くなろう
kazuhiro1982
0
140
JavaとWebAssembly
kazuhiro1982
0
180
SpringBoot 3.0 のNative Imageを試してみた
kazuhiro1982
0
480
セッションデータの管理にSpring Sessionを利用する
kazuhiro1982
0
3.8k
AWSのLake Formation Governed Tablesを触ってみた
kazuhiro1982
0
470
VS CodeとRemote Containerで開発環境もコード管理しよう
kazuhiro1982
1
790
Serverless FrameworkでWebサイトの更新を検知して通知する
kazuhiro1982
0
550
Other Decks in Programming
See All in Programming
止まらない比較を止める — 余帰納法で無限ストリームを比べる
tarao
0
110
Railsバージョンを4倍にした話
optim
0
1k
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
130
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
240
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
750
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
320
SODA - FACT BOOK(JP)
sodainc
1
40k
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.3k
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
310
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
260
Featured
See All Featured
For a Future-Friendly Web
brad_frost
184
11k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.8k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
610
How Software Deployment tools have changed in the past 20 years
geshan
3
35k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
2
520
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
530
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Rails Girls Zürich Keynote
gr2m
96
14k