Docker -- 06 -- IDEA远程部署项目到Docker
以往我们部署项目的时候,每次都需要先打包,然后上传服务器,再将原来的服务停止并删除原有的包,最后运行新的包;这样整个一套流程下来,一两次还好,次数多了就会很繁琐,因此我们可以使用 Docker 来实现一键化部署
-
Docker 版本:18.09.6
-
IDEA 版本:2018.3.1 x64
一、开启远程连接端口
远程连接 Docker 需要用到 2375 端口,默认是关闭的,我们需要将其开启 (此种方法仅在测试环境下进行)
-
vim /usr/lib/systemd/system/docker.service
-
在
ExecStart=/usr/bin/dockerd-current后加上-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock -
systemctl daemon-reload
-
systemctl restart docker
重启 Docker 后,我们再通过 IDEA 来连接 Docker

如上所示,在配置了 IP + 端口后,远程连接 Docker 成功
二、搭建项目
-
application.yml
server: port: 9998 -
HelloController.java
@RestController public class HelloController { @GetMapping(value = "/hello") public String hello() { return "Hello World !"; } }
三、配置插件
搭建完后在 pom.xml 中添加 Docker 插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!-- 将插件绑定在某个阶段执行 -->
<executions>
<execution>
<id>build-image</id>
<!-- 将 mvn docker:build 绑定至 mvn package 上 -->
<!-- 即当执行 mvn package 时,会自动执行 mvn docker:build 生成镜像 -->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 指定生成的镜像名 -->
<imageName>${project.artifactId}</imageName>
<!-- 指定版本号 -->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定远程服务器 Docker 地址 -->
<dockerHost>http://******:2375</dockerHost>
<!-- 依赖镜像 -->
<baseImage>jdk:8.0</baseImage>
<!-- 作者信息 -->
<maintainer>xj</maintainer>
<!-- 复制本地 jar 包到 Docker 容器中指定位置 -->
<resources>
<resource>
<!-- 容器中自定义 jar 包存放路径 -->
<targetPath>/data/program/</targetPath>
<!-- 本地 jar 包所在路径 -->
<directory>${project.build.directory}</directory>
<!-- 本地 jar 包名称 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<entryPoint>["java", "-jar", "/data/program/${project.build.finalName}.jar"]</entryPoint>
</configuration>
</plugin>
如上所示,我们在插件中直接设置好了相关配置,其实就是将 Dockerfile 文件中的内容直接写在了配置文件中 (此外我们可以通过 <dockerDirectory> 标签来指定 Dockerfile 文件的位置)
四、打包部署
此时我们直接在 IDEA 右侧的 maven 工具中,执行 package 命令,待打包完成后会自动执行 mvn docker:build 命令

当执行完毕后,我们通过 docker images 来查看当前镜像,此时项目镜像已生成

五、创建容器,启动镜像


如上所示,我们可以指定容器内外端口的映射关系,其他参数我们在 Docker 插件中已经设置过了,可以不用再设置
-
7041
- 容器对外端口
-
9998
- 容器内程序自身对外端口
此时容器已启动,我们通过浏览器可以来进行验证

浙公网安备 33010602011771号