Spring Bootを使ったJavaアプリケーションをElastic Beanstalk(AWSのPaaS)上にデプロイする手順をざっくりおさらいします。
初投稿なので、至らないところもあるかとは思いますが、ご了承ください。
BeanstalkへのデプロイはAWSのコンソールからでもできるのですが、今回はCIツールからも実行したいので、CLI(EB CLI)を使います。
前提
今回はBeanstalkの設定手順を説明します。
SpringBootアプリの作成については割愛します。
ビルドツールはgradleです。
環境
Mac OSX10.14.3
EB CLIのインストール
homebrewでBeanstalkのCLIをインストールします。
$ brew install awsebcli
AWS CLIのインストール
Access KeyとSecret Access Keyの設定を保存するためにAWSのCLIもインストールします。
$ brew install awscli
アクセスキー設定
$ aws configure
AWS Access Key ID [None]: {アクセスキーを入力}
AWS Secret Access Key [None]: {シークレットアクセスキーを入力}
プロジェクト設定
デプロイはプロジェクトのディレクトリで行います。
$ cd workspace/ebdemo/demo
初めにプロジェクトの設定です。
$ eb init
対話型で設定していきます。
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-south-1 : Asia Pacific (Mumbai)
7) ap-southeast-1 : Asia Pacific (Singapore)
8) ap-southeast-2 : Asia Pacific (Sydney)
9) ap-northeast-1 : Asia Pacific (Tokyo)
10) ap-northeast-2 : Asia Pacific (Seoul)
11) sa-east-1 : South America (Sao Paulo)
12) cn-north-1 : China (Beijing)
13) cn-northwest-1 : China (Ningxia)
14) us-east-2 : US East (Ohio)
15) ca-central-1 : Canada (Central)
16) eu-west-2 : EU (London)
17) eu-west-3 : EU (Paris)
18) eu-north-1 : EU (Stockholm)
(default is 3): 9
Select an application to use
1) [ Create new Application ]
(default is 1):
Enter Application Name
(default is "demo"):
Application demo has been created.
Select a platform.
1) Node.js
2) PHP
3) Python
4) Ruby
5) Tomcat
6) IIS
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
11) Java
12) Packer
(default is 1): 11
Select a platform version.
1) Java 8
2) Java 7
(default is 1):
Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization
Do you want to set up SSH for your instances?
(Y/n): Y
Select a keypair.
1) key
2) [ Create new KeyPair ]
(default is 2): 2
デプロイ
デプロイの前にアプリケーションのjarをプロジェクトルートにコピーします。
$ cp build/libs/demo-0.0.1-SNAPSHOT.jar .
デプロイします。
$ eb create
Enter Environment Name
(default is demo-dev):
Enter DNS CNAME prefix
(default is demo-dev):
Select a load balancer type
1) classic
2) application
3) network
(default is 2):
数分かかります。
動作確認
動いてます。
$ curl http://demo-dev.ap-northeast-1.elasticbeanstalk.com
Hello, World!
2回目以降のデプロイ
2回目以降は以下のコマンドだけでデプロイできます。
SSH、アクセスキー等設定しておけば、CIツールから自動デプロイ可能です。
$ gradle clean build test
$ cp build/libs/demo-0.0.1-SNAPSHOT.jar .
$ eb deploy
追記
application.propertiesに下記の設定が必要なようです。
server.port=5000