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

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

(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项目竟然如此简单方便!

网页标题:当Docker遇上IDEA ,生产力彻底炸裂了
标题路径:http://www.hantingmc.com/qtweb/news26/479176.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联