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
400
SpringBootをコンテナで動かしてみる
Kazuhiro Seo
February 09, 2020
Tweet
Share
More Decks by Kazuhiro Seo
See All by Kazuhiro Seo
GitHub ActionsとAWSをOIDC認証で連携する
kazuhiro1982
1
110
Gradleとちょっと仲良くなろう
kazuhiro1982
0
70
JavaとWebAssembly
kazuhiro1982
0
96
SpringBoot 3.0 のNative Imageを試してみた
kazuhiro1982
0
390
セッションデータの管理にSpring Sessionを利用する
kazuhiro1982
0
2.7k
AWSのLake Formation Governed Tablesを触ってみた
kazuhiro1982
0
390
VS CodeとRemote Containerで開発環境もコード管理しよう
kazuhiro1982
1
650
Serverless FrameworkでWebサイトの更新を検知して通知する
kazuhiro1982
0
490
Other Decks in Programming
See All in Programming
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
1.7k
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
0
470
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
140
童醫院敏捷轉型的實踐經驗
cclai999
0
210
A2A プロトコルを試してみる
azukiazusa1
2
1.3k
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
590
PipeCDのプラグイン化で目指すところ
warashi
1
230
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
240
#QiitaBash MCPのセキュリティ
ryosukedtomita
0
670
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
120
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
1
330
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
660
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.3k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Optimizing for Happiness
mojombo
379
70k
RailsConf 2023
tenderlove
30
1.1k
Balancing Empowerment & Direction
lara
1
390
Statistics for Hackers
jakevdp
799
220k
Designing for humans not robots
tammielis
253
25k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
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 を - コンテナで - 動かしてみる