Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SpringBootをコンテナで動かしてみる
Search
Kazuhiro Seo
February 09, 2020
Programming
0
410
SpringBootをコンテナで動かしてみる
Kazuhiro Seo
February 09, 2020
Tweet
Share
More Decks by Kazuhiro Seo
See All by Kazuhiro Seo
GitHub ActionsとAWSをOIDC認証で連携する
kazuhiro1982
1
140
Gradleとちょっと仲良くなろう
kazuhiro1982
0
84
JavaとWebAssembly
kazuhiro1982
0
100
SpringBoot 3.0 のNative Imageを試してみた
kazuhiro1982
0
410
セッションデータの管理にSpring Sessionを利用する
kazuhiro1982
0
3k
AWSのLake Formation Governed Tablesを触ってみた
kazuhiro1982
0
400
VS CodeとRemote Containerで開発環境もコード管理しよう
kazuhiro1982
1
680
Serverless FrameworkでWebサイトの更新を検知して通知する
kazuhiro1982
0
500
Other Decks in Programming
See All in Programming
Inside of Swift Export
giginet
PRO
1
260
Amazon ECS Managed Instances が リリースされた!キャッチアップしよう!! / Let's catch up Amazon ECS Managed Instances
cocoeyes02
0
120
CSC305 Lecture 10
javiergs
PRO
0
330
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
47k
퇴근 후 1억이 거래되는 서비스 만들기 | 내가 AI를 사용하는 방법
maryang
2
160
Kotlinで実装するCPU/GPU 「協調的」パフォーマンス管理
matuyuhi
0
130
Go言語はstack overflowの夢を見るか?
logica0419
0
670
Introducing RemoteCompose: break your UI out of the app sandbox.
camaelon
2
270
pnpm に provenance のダウングレード を検出する PR を出してみた
ryo_manba
1
170
When Dependencies Fail: Building Antifragile Applications in a Fragile World
selcukusta
0
120
contribution to astral-sh/uv
shunsock
0
570
Swift Concurrency 年表クイズ
omochi
3
210
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Fireside Chat
paigeccino
41
3.7k
Side Projects
sachag
455
43k
Agile that works and the tools we love
rasmusluckow
331
21k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Keith and Marios Guide to Fast Websites
keithpitt
412
23k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Building an army of robots
kneath
306
46k
Optimizing for Happiness
mojombo
379
70k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Code Reviewing Like a Champion
maltzj
526
40k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Transcript
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 を - コンテナで - 動かしてみる