This is a sample microservice application built with Spring Boot and Docker, deployed on Amazon ECS, to manage bananas 🍌
Review the steps below to learn how it was created and how to create your own:
You will need to install the Spring Boot CLI to get started. The recommended way is to use SDKMAN!. First install SDKMAN! with:
$ curl -s "https://get.sdkman.io" | bash
Then, install Spring Boot with:
$ sdk install springboot
Alternatively, you could install with Homebrew:
$ brew tap pivotal/tap
$ brew install springboot
Or MacPorts:
$ sudo port install spring-boot-cli
Use the Spring Boot CLI to create a project:
$ spring init --build=gradle --package-name=com.stelligent --dependencies=web,actuator,hateoas -n Banana banana-service
write some code...
Start the app by running:
$ gradle bootRun
Try it out:
$ curl http://localhost:8080/bananas
Update gradle to build the docker image:
buildscript {
...
dependencies {
...
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath 'com.bmuschko:gradle-docker-plugin:3.0.3'
}
}
group = 'stelligent'
...
apply plugin: 'application'
apply plugin: 'spring-boot'
apply plugin: 'com.bmuschko.docker-java-application'
docker {
url = 'unix:///var/run/docker.sock'
javaApplication {
baseImage = 'java:8'
maintainer = 'Casey Lee "casey.lee@stelligent.com"'
ports = [8080]
tag = "${project.repoUrl}:${project.revision}"
}
registryCredentials {
def ecrAuthData = new JsonSlurper().parseText('aws ecr get-authorization-token'.execute().text).authorizationData[0]
def credentials = new String(ecrAuthData.authorizationToken.decodeBase64()).tokenize(':')
username = credentials[0]
password = credentials[1]
url = ecrAuthData.proxyEndpoint
}
}
Then run:
$ gradle dockerBuildImage
Run it with:
$ docker run -p 8080:8080 -t stelligent/banana-service
Setup the stack with:
$ gradle platformUp
Push latest image to ECR and update the ECS service:
$ gradle deploy