This post walks through the setup of development environment for Docker with IntelliJ using Maven. We will use a Spring boot application and configure IntelliJ for iterative development.
Spring Boot ApplicationThe demo application is a simple one page app which displays a chart of VIX index. We will wire Quandl’s web service to fetch the historical data about VIX index and use CanvasJS charting library to display the chart. You can learn more about Spring Boot application with this Spring Guide. Here are some highlights:
@SpringBootApplication is the convenience annotation that marks the class as an entry point.
Setup Spring wiring using java in this class. It is any class that is marked with @Configuration annotation.
View - JSPs
Application’s view pages are under /webapp/WEB-INF/jsp. application.properties file provided configuration to wire Spring’s view resolver.
Application’s static content under src/main/resources/static as below.
You can find entire source code here on github.
spring-boot-maven-plugin make executing lifecycle events easier. If you open IntelliJ’s Maven window, you will see all spring-boot-run, which will allow you to run the project. You can also create run configuration for easy access.
Setting up DockerYou can setup Docker environment by following instructions from docker for mac documentation.
Docker, Maven and IntelliJ
We will use docker-maven-plugin from com.spotify
Configuration for docker plugin
ServerId tag specifies the docker repository you want to push to. The credentials to the serverId needs to be provided in your maven settings.xml. You have option of mvn encrypting the password. Follow instructions here
To get it running in IntelliJ, you can setup Run Configuration as follows:
1. Open Run -> Edit Configuration
2. Add Maven Configuration
3. Provide maven command line as clean package docker:build
4. Go to the Runner tab and provide environment variables
5. Similarly, you can also create docker:push run configuration, if you want to push docker image to docker registry.