前言
1 2 3 4 5 6 | 随着容器化部署方式的流行,各IT公司大部分已经完成了云原生架构实现,如何将 项目工程打包成镜像并运行?国外已有众多基于Maven插件实现的打包方案,本文 已实测并实现了几种常见的打包方式,比如谷歌公司的jib、spotify等插件,实际 使用中,总出现与实际项目不太契合等各种问题,继续搜索实测后,发现了一个开源 打包插件,功能强大且使用简单,但国内相关资料甚少,所以鄙人记录之,望能帮助 到需要的小伙伴~ |
插件介绍
基网地址:https://github.com/fabric8io/docker-maven-plugin
官方文档地址:https://dmp.fabric8.io/
插件特征:
- 支持多种配置打包镜像的方法,例如Dockerfile文件或自定义语法
- 支持远程Docker守护程序,无需本地安装docker环境
实现案例
- 准备一个基于spring boot的demo
- 编写Dockerfile文件,放在工程根目录下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 基础镜像 FROM 192.168.58.173/library/openjdk:8-jdk-alpine # 作者信息 MAINTAINER td # 创建工作目录 RUN mkdir -p /deploy/app # 切换工作目录 WORKDIR /deploy/app # 容器开放端口 EXPOSE 8080 # 添加jar包 ADD ./target/demo-kubenetes-2.3.0.jar ./demo-kubenetes-2.3.0.jar # 容器启动执行命令 ENTRYPOINT ["java", "-jar", "demo-kubenetes-2.3.0.jar"] |
- Maven引入插件并配置相关信息
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 | <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.33.0</version> <!--全局配置--> <configuration> <!--配置远程docker守护进程url--> <dockerHost>http://192.168.58.173:2375</dockerHost> <!--认证配置,用于私有registry认证--> <authConfig> <username>admin</username> <password>Harbor12345</password> </authConfig> <!--镜像相关配置,支持多镜像--> <images> <!-- 单个镜像配置 --> <image> <!--镜像名(含版本号)--> <name>library/${project.name}:${project.version}</name> <!--registry地址,用于推送,拉取镜像--> <registry>192.168.58.173</registry> <!--镜像build相关配置--> <build> <!--使用dockerFile文件--> <dockerFile>${project.basedir}/Dockerfile</dockerFile> </build> </image> </images> </configuration> </plugin> </plugins> </build> |
- 打包并推送镜像
命令: mvn clean package docker:build & mvn docker:push
- 运行镜像
运行命令:
1 | docker run -it --name my-demo -p 8888:8080 192.168.58.173/library/demo-kubenetes:2.3.0 |