当Docker遇上IDEA ,生产力彻底炸裂了

新闻 前端
Idea是Java开发利器,SpringBoot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢?

 [[411168]]

Idea是Java开发利器,SpringBoot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢?

一、开发前准备

1.Docker的安装可以参考https://docs.docker.com/install/

2.配置docker远程连接端口

  1. vi /usr/lib/systemd/system/docker.service 

找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下图所示:

3.重启docker

  1. systemctl daemon-reload 
  2.  
  3. systemctl start docker 

4.开放端口

  1. firewall-cmd --zone=public --add-port=2375/tcp --permanent 

5.Idea安装插件,重启

6.连接远程docker

(1) 编辑配置

(2) 填远程docker地址

(3) 连接成功,会列出远程docker容器和镜像

二、新建项目

1.创建springboot项目

项目结构图:

(1) 配置pom文件

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2.  
  3. <project xmlns="http://maven.apache.org/POM/4.0.0" 
  4.  
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  6.  
  7. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
  8.  
  9. <modelVersion>4.0.0</modelVersion> 
  10.  
  11. <groupId>docker-demo</groupId> 
  12.  
  13. <artifactId>com.demo</artifactId> 
  14.  
  15. <version>1.0-SNAPSHOT</version> 
  16.  
  17. <parent> 
  18.  
  19. <groupId>org.springframework.boot</groupId> 
  20.  
  21. <artifactId>spring-boot-starter-parent</artifactId> 
  22.  
  23. <version>2.0.2.RELEASE</version> 
  24.  
  25. <relativePath /> 
  26.  
  27. </parent> 
  28.  
  29. <properties> 
  30.  
  31. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
  32.  
  33. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
  34.  
  35. <docker.image.prefix>com.demo</docker.image.prefix> 
  36.  
  37. <java.version>1.8</java.version> 
  38.  
  39. </properties> 
  40.  
  41. <build> 
  42.  
  43. <plugins> 
  44.  
  45. <plugin> 
  46.  
  47. <groupId>org.springframework.boot</groupId> 
  48.  
  49. <artifactId>spring-boot-maven-plugin</artifactId> 
  50.  
  51. </plugin> 
  52.  
  53. <plugin> 
  54.  
  55. <groupId>com.spotify</groupId> 
  56.  
  57. <artifactId>docker-maven-plugin</artifactId> 
  58.  
  59. <version>1.0.0</version> 
  60.  
  61. <configuration> 
  62.  
  63. <dockerDirectory>src/main/docker</dockerDirectory> 
  64.  
  65. <resources> 
  66.  
  67. <resource> 
  68.  
  69. <targetPath>/</targetPath> 
  70.  
  71. <directory>${project.build.directory}</directory> 
  72.  
  73. <include>${project.build.finalName}.jar</include> 
  74.  
  75. </resource> 
  76.  
  77. </resources> 
  78.  
  79. </configuration> 
  80.  
  81. </plugin> 
  82.  
  83. <plugin> 
  84.  
  85. <artifactId>maven-antrun-plugin</artifactId> 
  86.  
  87. <executions> 
  88.  
  89. <execution> 
  90.  
  91. <phase>package</phase> 
  92.  
  93. <configuration> 
  94.  
  95. <tasks> 
  96.  
  97. <copy todir="src/main/docker" file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy> 
  98.  
  99. </tasks> 
  100.  
  101. </configuration> 
  102.  
  103. <goals> 
  104.  
  105. <goal>run</goal> 
  106.  
  107. </goals> 
  108.  
  109. </execution> 
  110.  
  111. </executions> 
  112.  
  113. </plugin> 
  114.  
  115. </plugins> 
  116.  
  117. </build> 
  118.  
  119. <dependencies> 
  120.  
  121. <dependency> 
  122.  
  123. <groupId>org.springframework.boot</groupId> 
  124.  
  125. <artifactId>spring-boot-starter-web</artifactId> 
  126.  
  127. </dependency> 
  128.  
  129. <dependency> 
  130.  
  131. <groupId>org.springframework.boot</groupId> 
  132.  
  133. <artifactId>spring-boot-starter-test</artifactId> 
  134.  
  135. <scope>test</scope> 
  136.  
  137. </dependency> 
  138.  
  139. <dependency> 
  140.  
  141. <groupId>log4j</groupId> 
  142.  
  143. <artifactId>log4j</artifactId> 
  144.  
  145. <version>1.2.17</version> 
  146.  
  147. </dependency> 
  148.  
  149. </dependencies> 
  150.  
  151. </project> 

(2) 在src/main目录下创建docker目录,并创建Dockerfile文件

  1. FROM openjdk:8-jdk-alpine 
  2.  
  3. ADD *.jar app.jar 
  4.  
  5. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"

(3) 在resource目录下创建application.properties文件

  1. logging.config=classpath:logback.xml 
  2.  
  3. logging.path=/home/developer/app/logs/ 
  4.  
  5. server.port=8990 

(4) 创建DockerApplication文件

  1. @SpringBootApplication 
  2.  
  3. public class DockerApplication { 
  4.  
  5. public static void main(String[] args) { 
  6.  
  7. SpringApplication.run(DockerApplication.class, args); 
  8.  
  9.  

(5) 创建DockerController文件

  1. @RestController 
  2.  
  3. public class DockerController { 
  4.  
  5. static Log log = LogFactory.getLog(DockerController.class); 
  6.  
  7. @RequestMapping("/"
  8.  
  9. public String index() { 
  10.  
  11. log.info("Hello Docker!"); 
  12.  
  13. return "Hello Docker!"
  14.  
  15.  

(6) 增加配置

命令解释

  1. Image tag : 指定镜像名称和tag,镜像名称为 docker-demo,tag为1.1 
  2.  
  3. Bind ports : 绑定宿主机端口到容器内部端口。格式为[宿主机端口]:[容器内部端口] 
  4.  
  5. Bind mounts : 将宿主机目录挂到到容器内部目录中。格式为[宿主机目录]:[容器内部目录]。这个springboot项目会将日志打印在容器 
  6.  
  7. /home/developer/app/logs/ 目录下,将宿主机目录挂载到容器内部目录后,那么日志就会持久化容器外部的宿主机目录中。 

(7) Maven打包

(8) 运行

先pull基础镜像,然后再打包镜像,并将镜像部署到远程docker运行

这里我们可以看到镜像名称为docker-demo:1.1,docker容器为docker-server

(9) 运行成功

(10) 浏览器访问

(11) 日志查看

自此通过idea 部署springboot项目到docker成功!难以想象,部署一个Javaweb项目竟然如此简单方便!

 

责任编辑:张燕妮 来源: 民工哥技术之路
相关推荐

2022-03-14 15:07:28

DockerJavaIdea

2022-09-13 13:02:33

VSCodeIDEA

2012-08-27 13:30:21

BYOD

2020-12-07 06:22:05

MyBatisPlus开发MP

2024-05-21 00:00:00

2016-07-14 14:12:11

华为

2023-02-13 08:34:26

Linux键盘快捷键

2023-04-06 09:53:21

Harbor企业级服务

2024-04-01 14:24:05

数字信任人工智能

2020-10-28 10:25:11

云端云计算云迁移

2019-12-23 15:28:47

人工智能AI生产力

2023-02-02 15:10:33

自动化RPA

2018-07-23 14:57:12

2023-07-20 09:00:00

人工智能自主AI代理

2022-01-10 10:45:16

大数据大数据动向数据技术

2013-10-10 09:42:33

惠普低碳经济新型生产力

2021-02-04 13:00:40

树莓派Linux

2013-11-20 09:29:30

Android应用

2021-09-14 16:21:47

远程办公戴尔科技
点赞
收藏

51CTO技术栈公众号