这篇介绍如何用idea集成docker插件部署springboot项目,以及一些坑点总结,下篇介绍用eclipse部署。总体而言,idea比eclipse部署简单多了,idea真香!
工具版本
1. idea:2019.2.3
2.虚拟机方面的可以参考之前写的这篇
手把手教你用virtualBox安装centos7的步骤和解决网络配置问题
步骤:
1.Docker开启远程访问
2.idea安装docker插件
打开file-settings-plugins,搜索docker,有鲸鱼图标的那个就是啦
2019以上的版本都自带这个插件了,有的话这个步骤就不用看了
坑点1: 在后续部署docker的配置环境时会跳出"email required",导致docker一直连接不上远程服务器,网上也没有解决方法,后来才发现是因为idea的版本问题,之前用2018.2版本的出现了这个问题才换了2019.2的版本,后面步骤也会讲到。
3.编写自己的springboot项目
就很简单的一个demo,项目名字是springboot-01,只在controller写一个测试类,当访问时弹出 "HelloWorld docker!!!"
坑点2:demo的命名必须全部为小写,平时习惯驼峰命名的,后续打包就会出错
Failed to execute goal com.spotify:docker-maven-plugin:1.0.0:build (default-cli) on project dockerDemo: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.client.ClientProtocolException: Cannot retry request with a non-repeatable request entity: Connection reset by peer
4.编辑项目的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.java</groupId>
<artifactId>springboot-01</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!--不能有大写,需要全部小写,这里就不能写Ryan-->
<docker.image.prefix>ryan</docker.image.prefix>
<!--远程settings.xml文件-->
<!-- <server>-->
<!-- <id>local_docker</id>-->
<!-- <username>lulu</username>-->
<!-- <password>123456</password>-->
<!-- </server>-->
<!-- <docker.serverId>local_docker</docker.serverId>-->
<!--自己远程docker仓库的ip地址,端口默认5050-->
<docker.registry>192.168.56.104:5000</docker.registry>
<!--自己远程docker的ip地址-->
<docker.host>http://192.168.56.104:2375</docker.host>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--镜像名称 Ryan-->
<!-- 镜像名称必须全部小写 -->
<imageName>${docker.image.prefix}/${project.name}</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!--基础镜像jdk 1.8-->
<baseImage>java</baseImage>
<!--制作者提供本人信息-->
<maintainer>Ryan dddd@qq.com</maintainer>
<!--切换到/ROOT目录-->
<workdir>/ROOT</workdir>
<!--<cmd>["java", "-version"]</cmd-->
<entryPoint>["java","-jar","${project.build.finalName}.jar"]</entryPoint>
<!-- docker私服地址 -->
<registryUrl>${docker.registry}</registryUrl>
<!--指定远程docker api地址-->
<dockerHost>${docker.host}</dockerHost>
<!--复制jar包到docker容器指定目录位置-->
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件,${project.build.finalName}.jar表示打包后的jar文件-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<executions>
<!-- package之前清除上一次构建的image -->
<execution>
<id>remove-image</id>
<phase>package</phase>
<goals>
<goal>removeImage</goal>
</goals>
</execution>
<!--当执行mvn package时,执行:mvn package docker:build-->
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
该有的注释都在里面了,当项目进行了打包编译之后,在项目的target目录下就会根据这个pom.xml文件自动生成Dockerfile文件 ,这样就不需要自己编写了。
5.docker环境部署
5.1 file-settings-docker那里点击+号配置自己的远程仓库ip,这里的ip就是之前部署linux环境时的ip,端口号2375是在第一步开启docker远程访问时设置好的
坑点3:若是低版本(2019.2以下的)没有自带docker,需要手动安装的可能会出现“email required”,只能选用高版本idea吧
5.2 为了方便下载镜像,可以在docker-registry那里设置自己的阿里云镜像
5.3 在maven那里点击clean,再点击package,就可以打包自己的项目了
5.4 在docker那里右键connect就可以远程连接自己的docker
在images那里就可以看到自己打包的项目镜像了
5.5 右键该镜像,点击creat container,再点击creat就出现配置页面,配置如下
6.运行测试
浏览器输入自己 192.168.56.104.8181/test出现成功页面