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

SpringBootをコンテナで動かしてみる

6577e91f79feaba49cb2bbed81381efc?s=47 Kazuhiro Seo
February 09, 2020

 SpringBootをコンテナで動かしてみる

6577e91f79feaba49cb2bbed81381efc?s=128

Kazuhiro Seo

February 09, 2020
Tweet

Transcript

  1. SpringBoot を SpringBoot を コンテナで コンテナで 動かしてみる 動かしてみる SpringBoot を

    - コンテナで - 動かしてみる 
  2. ⾃⼰紹介 ⾃⼰紹介 妹尾 ⼀弘 札幌でシステム開発会社勤務 興味分野 AWS/ サーバーレス/Java SpringBoot を

    - コンテナで - 動かしてみる 
  3. コンテナ コンテナ 使ってますか? 使ってますか? SpringBoot を - コンテナで - 動かしてみる

  4. 私は使ってません 私は使ってません SpringBoot を - コンテナで - 動かしてみる 

  5. 最近のプロジェクトで 最近のプロジェクトで SpringBoot アプリを SpringBoot アプリを Docker で動かした話 Docker で動かした話

    SpringBoot を - コンテナで - 動かしてみる 
  6. アジェンダ アジェンダ 1. なぜDocker を使うことになったか 2. SpringBoot をDocker 化する 3.

    Docker Image を動かす SpringBoot を - コンテナで - 動かしてみる 
  7. #1 なぜDocker を使うことに #1 なぜDocker を使うことに なったか なったか SpringBoot を

    - コンテナで - 動かしてみる 
  8. インフラはAWS Beanstalk インフラはAWS Beanstalk SpringBoot を - コンテナで - 動かしてみる

  9. Java 11 を採⽤ Java 11 を採⽤ SpringBoot を - コンテナで

    - 動かしてみる 
  10. Beanstalk がJava11 を未サポート Beanstalk がJava11 を未サポート (2020 年2 ⽉現在はベータ版で提供中) SpringBoot

    を - コンテナで - 動かしてみる 
  11. Docker ならJava11 が動かせる! Docker ならJava11 が動かせる! SpringBoot を - コンテナで

    - 動かしてみる 
  12. #2 SpringBoot をDocker 化する #2 SpringBoot をDocker 化する SpringBoot を

    - コンテナで - 動かしてみる 
  13. イメージ作成〜デプロイの流れ イメージ作成〜デプロイの流れ SpringBoot を - コンテナで - 動かしてみる 

  14. Dockerfile Dockerfile SpringBoot を - コンテナで - 動かしてみる 

  15. From From SpringBoot を - コンテナで - 動かしてみる 

  16. Run Run SpringBoot を - コンテナで - 動かしてみる 

  17. Volume Volume SpringBoot を - コンテナで - 動かしてみる 

  18. Env Env SpringBoot を - コンテナで - 動かしてみる 

  19. Copy Copy SpringBoot を - コンテナで - 動かしてみる 

  20. Expose Expose SpringBoot を - コンテナで - 動かしてみる 

  21. Entrypoint Entrypoint SpringBoot を - コンテナで - 動かしてみる 

  22. 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 を - コンテナで - 動かしてみる 
  23. Build Image Build Image SpringBoot を - コンテナで - 動かしてみる

  24. #3 Docker を動かす #3 Docker を動かす SpringBoot を - コンテナで

    - 動かしてみる 
  25. AWS Elastic Beanstalk AWS Elastic Beanstalk AWS のPaaS サービス Platform

    の1 つとしてDocker をサポート SpringBoot を - コンテナで - 動かしてみる 
  26. デプロイ⽅法は3 パターン デプロイ⽅法は3 パターン Docker Docker le のデプロイ コンテナレジストリから取得 MultiContainer

    Docker SpringBoot を - コンテナで - 動かしてみる 
  27. Docker Platform の構成 Docker Platform の構成 SpringBoot を - コンテナで

    - 動かしてみる 
  28. Dockerfile をデプロイして Dockerfile をデプロイして デプロイ先でdocker build デプロイ先でdocker build 実⾏定義ファイル Dockerrun.aws.json

    を定義 Docker le と定義ファイルをzip にしてデプロイ ホストインスタンスでdocker build & docker run SpringBoot を - コンテナで - 動かしてみる 
  29. Dockerrun.aws.json Dockerrun.aws.json { "AWSEBDockerrunVersion": 1, "Ports": [ { "ContainerPort": 8000

    } ], "Volumes": [ { "HostDirectory": "/var/log/app", "ContainerDirectory": "/app/logs" } ] } SpringBoot を - コンテナで - 動かしてみる 
  30. SampleApplication.zip SampleApplication.zip SampleApplication.zip / |- Dockerfile |- Dockerrun.aws.json |- build/

    |- libs/ |- SampleApplication.jar SpringBoot を - コンテナで - 動かしてみる 
  31. コンテナレジストリから コンテナレジストリから 取得して実⾏ 取得して実⾏ ビルドしたイメージをレジストリにPush 実⾏定義ファイル Dockerrun.aws.json を定義 コンテナレジストリからイメージをPull SpringBoot

    を - コンテナで - 動かしてみる 
  32. Container Registry Container Registry ビルドしたContainer Image を保存する場所 パブリックレジストリ Docker Hub

    プライベートレジストリ private Docker Hab Elastic Container Registry (AWS) Azure Container Registry (Azure) SpringBoot を - コンテナで - 動かしてみる 
  33. ECR にリポジトリを作成 ECR にリポジトリを作成 SpringBoot を - コンテナで - 動かしてみる

  34. ビルド済みのローカルの ビルド済みのローカルの コンテナにタグを付ける コンテナにタグを付ける $ docker tag javado:latest \ xxx.dkr.ecr.ap-northeast-1.amazonaws.com/javado:2020020901

    SpringBoot を - コンテナで - 動かしてみる 
  35. ECR にPush ECR にPush $ docker push xxx.dkr.ecr.ap-northeast-1.amazonaws.com/javado:202 SpringBoot を

    - コンテナで - 動かしてみる 
  36. 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 を - コンテナで - 動かしてみる 
  37. SampleApplication.zip SampleApplication.zip SampleApplication.zip / |- Dockerrun.aws.json SpringBoot を - コンテナで

    - 動かしてみる 
  38. Multicontainer Docker の構成 Multicontainer Docker の構成 SpringBoot を - コンテナで

    - 動かしてみる 
  39. Multicontainer Docker Multicontainer Docker 複数のコンテナを実⾏可能 docker-compose 相当の構成が出来る 実際にはECS が起動する SpringBoot

    を - コンテナで - 動かしてみる 
  40. 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 を - コンテナで - 動かしてみる 
  41. デプロイ⽅法の違い デプロイ⽅法の違い SpringBoot 単独で動かすならDocker がシンプル Docker le 直接ならRegistry が不要 Registry

    を使⽤する⽅法が汎⽤的 複数コンテナを動かしたいならMultiContainer SpringBoot を - コンテナで - 動かしてみる 
  42. コンテナ化しておけば コンテナ化しておけば 運⽤⽅法に関わらず 運⽤⽅法に関わらず 同じアプリが動作するので、 同じアプリが動作するので、 運⽤しやすい選択肢が選べる 運⽤しやすい選択肢が選べる SpringBoot を

    - コンテナで - 動かしてみる 
  43. アプリの実⾏環境をコンテナに押し込むことで アプリの実⾏環境をコンテナに押し込むことで 実⾏環境と運⽤環境を切り離すことができる 実⾏環境と運⽤環境を切り離すことができる SpringBoot を - コンテナで - 動かしてみる

  44. コンテナ コンテナ 使っていきましょう 使っていきましょう SpringBoot を - コンテナで - 動かしてみる

  45. ありがとうございました ありがとうございました SpringBoot を - コンテナで - 動かしてみる  