IDEA是Java开发利器,Spring Boot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢?
一、开发前准备
1. Docker安装
可以参考:https://docs.docker.com/install/
2.配置docker远程连接端口
vi /usr/lib/systemd/system/docker.service
找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下图所示
重启docker
- systemctl daemon-reload
-
- systemctl start docker
开放端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
Idea安装插件,重启
连接远程docker
1、编辑配置
2、填远程docker地址
3、连接成功,会列出远程docker容器和镜像
二、新建项目
创建Spring Boot项目
项目结构图
1、配置pom文件
- <properties>
- <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
- <docker.image.prefix>com.demodocker.image.prefix>
- <java.version>1.8java.version>
- properties>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-maven-pluginartifactId>
- plugin>
-
- <plugin>
- <groupId>com.spotifygroupId>
- <artifactId>docker-maven-pluginartifactId>
- <version>1.0.0version>
- <configuration>
- <dockerDirectory>src/main/dockerdockerDirectory>
- <resources>
- <resource>
- <targetPath>/targetPath>
- <directory>${project.build.directory}directory>
- <include>${project.build.finalName}.jarinclude>
- resource>
- resources>
- configuration>
- plugin>
- <plugin>
- <artifactId>maven-antrun-pluginartifactId>
- <executions>
- <execution>
- <phase>packagephase>
- <configuration>
- <tasks>
- <copy todir="src/main/docker" file="target/${project.artifactId}-${project.groupId}"/>
- tasks>
- configuration>
- <goals>
- <goal>rungoal>
- goals>
- execution>
- executions>
- plugin>
- plugins>
- build>
- <dependencies>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-webartifactId>
- dependency>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-testartifactId>
- <scope>testscope>
- dependency>
- <dependency>
- <groupId>log4jgroupId>
- <artifactId>log4jartifactId>
- <version>1.2.17version>
- dependency>
- dependencies>
2、在src/main目录下创建docker目录,并创建Dockerfile文件
- FROM openjdk:8-jdk-alpine ADD *.jar app.jar
-
- ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
3、在resource目录下创建application.properties文件
- logging.config=classpath:logback.xml
- logging.path=/home/developer/app/logs/
- server.port=8990
4、创建DockerApplication文件
- @SpringBootApplication
- public class DockerApplication {
- public static void main(String[] args) {
- SpringApplication.run(DockerApplication.class, args);
- }
- }
5、创建DockerController文件
- @RestController
- public class DockerController {
- static Log log = LogFactory.getLog(DockerController.class);
- @RequestMapping("/")
- public String index() {
- log.info("Hello Docker!");
- return "Hello Docker!";
- }
- }
6、增加配置
命令解释:
Image tag : 指定镜像名称和tag,镜像名称为 docker-demo,tag为1.1
Bind ports : 绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口]
Bind mounts : 将宿主机目录挂到到容器内部目录中。
格式为[宿主机目录]:[容器内部目录]。这个springboot项目会将日志打印在容器 /home/developer/app/logs/ 目录下,将宿主机目录挂载到容器内部目录后,那么日志就会持久化容器外部的宿主机目录中。
7、Maven打包
8、运行
先pull基础镜像,然后再打包镜像,并将镜像部署到远程docker运行
这里我们可以看到镜像名称为docker-demo:1.1,docker容器为docker-server
9、运行成功
10、浏览器访问
11、日志查看
自此,通过IDEA 部署 Spring Boot 项目到Docker成功!难以想象,部署一个Javaweb项目竟然如此简单方便!