IDEA用Docker一键部署

299

Docker开启外网访问

修改docker.service文件,添加监听端口 -H tcp://0.0.0.0:2375

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

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

systemctl daemon-reload
systemctl start docker

访问:http://localhost:2375/version 返回版本信息表示成功

开启防火墙

安装配置idea的docker插件

在File --> Settings --> Plugins 在输入框中搜索Docker,选择并安装

在File–> Settings–>Build,Execution,Deployment中找到Docker

新建一个docker实例,然后在Engine API URL中将docker所在ip端口号填上,填完如果下面显示Connection successful证明连接docker成功。如果失败,可能是我们上一步docker开启远程连接未成功。

image

我们设置完成后,回到idea主界面,可以看到页面下面有一个docker窗口(有些版本是services窗口)。点击绿色箭头,连接docker。连接上后显示Containers和Images就是我们现在docker中已经有的容器和镜像。

image

maven打包,生成镜像

修改pom.xml文件,引入docker-maven-plugin插件相关配置. 改配置在plugins标签内

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<!--使用docker-maven-plugin插件--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> <!-- 跳过单元测试 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <!--使用docker-maven-plugin插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--将插件绑定在某个phase执行--> <executions> <execution> <id>build-image</id> <!--用户只需执行mvn package ,就会自动执行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的镜像名--> <imageName>project/${project.artifactId}</imageName> <!--指定标签--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!--指定基础镜像jdk1.8--> <baseImage>java</baseImage> <!--镜像制作人本人信息--> <maintainer>v-kun</maintainer> <!--切换到ROOT目录--> <workdir>/ROOT</workdir> <cmd>["java", "-version"]</cmd> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"] </entryPoint> <!--指定远程 docker api地址--> <dockerHost>http://192.168.4.32:2375</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路径 此处配置的 即对应 target 目录--> <directory>${project.build.directory}</directory> <!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>

在项目目录/src/main/resources下新建文件夹docker,在docker文件夹下新建DockerFile,编辑DockerFile

FROM java
MAINTAINER v-kun v-kun.com
WORKDIR /ROOT
ADD /ROOT/risen-hnshzt-txl-0.0.1-SNAPSHOT.jar /ROOT/
ENTRYPOINT ["java", "-jar", "risen-hnshzt-txl-0.0.1-SNAPSHOT.jar"]
CMD ["java", "-version"]

使用maven打包。我们在pom.xml中配置过,如果我们是用maven的package,那么就会自动使用Dockerfile文件进行构建。

image

创建容器,项目部署到docker

我们在docker窗口中,找到我们刚才创建的镜像文件,鼠标右键,选择Create container,我们修改创建容器所需要的配置。

image

在Create Docker Configuration弹窗中修改

  • Container name(容器名称)
  • Bind ports(Ip和端口映射)我在这里添加13047:13047. 使用本地13047端口,去访问容器的13047.
  • Environment variables (环境变量) 设置一下时区防止容器使用UTC时区
  • 在这里的Command line 中添加一个命令 package

image

image

配置完成后保存。以后我们启动项目时都会执行maven的package命令,自动将我们打包并把项目生成docker镜像文件启动。

以后,如果我们修改项目后,都可以使用下图所示去启动。 它会自动打包创建docker镜像并启动项目。

如果在idea的docker里面看项目日志中文乱码
打开Help-Edit Custom VM Options
在最后加一行,重启idea

-Dfile.encoding=UTF-8

image

目录