一. 前言
大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸。
二. 配置服务器
1. Docker安装
服务器需要安装Docker,如未安装参考这篇文章安装即可 Docker实战 | 第一篇:Linux 安装 Docker
2. Docker开启远程访问
复制代码
- 1
- 2
- 3
vim /usr/lib/systemd/system/docker.service
# 在ExecStart=/usr/bin/dockerd追加
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
复制代码
- 1
- 2
- 3
# 重新启动
systemctl daemon-reload
systemctl restart docker
复制代码
- 1
- 2
- 3
# 开放2375端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
3. 远程访问测试
复制代码
- 1
- 2
- 3
- 4
# 查看端口监听是否开启
netstat -nlpt
# curl测试是否生效
curl http://127.0.0.1:2375/info
二. 配置IDEA
IDEA安装Docker插件,打开插件市场(File->Settings->Plugins)
安装Docker插件后,配置Docker远程链接
三. Maven插件构建Docker镜像
1. 配置pom.xml
复制代码
- 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
<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>
<executions>
<!--执行mvn package,即执行 mvn clean package docker:build-->
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<span class="hljs-tag"><<span class="hljs-name">configuration</span>></span>
<span class="hljs-comment"><!-- 镜像名称 --></span>
<span class="hljs-tag"><<span class="hljs-name">imageName</span>></span>${project.artifactId}<span class="hljs-tag"></<span class="hljs-name">imageName</span>></span>
<span class="hljs-comment"><!-- 指定标签 --></span>
<span class="hljs-tag"><<span class="hljs-name">imageTags</span>></span>
<span class="hljs-tag"><<span class="hljs-name">imageTag</span>></span>latest<span class="hljs-tag"></<span class="hljs-name">imageTag</span>></span>
<span class="hljs-tag"></<span class="hljs-name">imageTags</span>></span>
<span class="hljs-comment"><!-- 基础镜像--></span>
<span class="hljs-tag"><<span class="hljs-name">baseImage</span>></span>openjdk:8-jdk-alpine<span class="hljs-tag"></<span class="hljs-name">baseImage</span>></span>
<span class="hljs-comment"><!-- 切换到容器工作目录--></span>
<span class="hljs-tag"><<span class="hljs-name">workdir</span>></span>/ROOT<span class="hljs-tag"></<span class="hljs-name">workdir</span>></span>
<span class="hljs-tag"><<span class="hljs-name">entryPoint</span>></span>["java","-jar","${project.build.finalName}.jar"]<span class="hljs-tag"></<span class="hljs-name">entryPoint</span>></span>
<span class="hljs-comment"><!-- 指定远程 Docker API地址 --></span>
<span class="hljs-tag"><<span class="hljs-name">dockerHost</span>></span>http://192.168.1.111:2375<span class="hljs-tag"></<span class="hljs-name">dockerHost</span>></span>
<span class="hljs-comment"><!-- 复制 jar包到docker容器指定目录--></span>
<span class="hljs-tag"><<span class="hljs-name">resources</span>></span>
<span class="hljs-tag"><<span class="hljs-name">resource</span>></span>
<span class="hljs-tag"><<span class="hljs-name">targetPath</span>></span>/ROOT<span class="hljs-tag"></<span class="hljs-name">targetPath</span>></span>
<span class="hljs-comment"><!-- 用于指定需要复制的根目录,${project.build.directory}表示target目录 --></span>
<span class="hljs-tag"><<span class="hljs-name">directory</span>></span>${project.build.directory}<span class="hljs-tag"></<span class="hljs-name">directory</span>></span>
<span class="hljs-comment"><!-- 用于指定需要复制的文件,${project.build.finalName}.jar就是打包后的target目录下的jar包名称 --></span>
<span class="hljs-tag"><<span class="hljs-name">include</span>></span>${project.build.finalName}.jar<span class="hljs-tag"></<span class="hljs-name">include</span>></span>
<span class="hljs-tag"></<span class="hljs-name">resource</span>></span>
<span class="hljs-tag"></<span class="hljs-name">resources</span>></span>
<span class="hljs-tag"></<span class="hljs-name">configuration</span>></span>