相关文章:
以往我们部署项目的时候,每次都需要先打包,然后上传服务器,再将原来的服务停止并删除原有的包,最后运行新的包;这样整个一套流程下来,一两次还好,次数多了就会很繁琐,因此我们可以使用 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 插件:docker-maven-plugin
<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 文件的位置)
四、打包部署
-
先删除 Docker 中已经存在的同名镜像以及容器
-
接着我们在 IDEA 右侧的 maven 工具中,执行 package 命令,待打包完成后会自动执行
mvn docker:build
命令
-
当执行完毕后,我们通过
docker images
来查看当前镜像,此时项目镜像已生成
五、创建容器,启动镜像
-
如上所示,我们可以指定容器内外端口的映射关系,其他参数我们在 Docker 插件中已经设置过了,可以不用再设置
端口 作用 7041 容器对外端口 9998 容器内程序自身对外端口 -
此时容器已启动,我们通过浏览器可以来进行验证