概述
容器docker/k8s发布已有一段时间,不少小伙伴开始上手实践。下面以一个简单的应用为例。来说明如何生成镜像并推送至镜像仓库。
准备工作
镜像仓库注册
以最常见的aliyun镜像仓库为例:
支付宝登录aliyun官网,搜索容器镜像服务,点击进入管理控制台。
点击进入个人实例(未开通的伙伴,请自行开通该服务)
开通命名空间
开通访问凭证
新建Java工程
我们以 https://gitee.com/00fly/docker-demo 为例.
引入docker-maven-plugin插件
pom.xml 插件部分
<!-- 添加docker-maven插件 --><plugin><groupId>io.fabric8</groupId><artifactId>docker-maven-plugin</artifactId><version>0.41.0</version><executions><execution><phase>package</phase><goals><goal>build</goal><goal>push</goal></goals></execution></executions><configuration><!-- 连接到带docker环境的linux服务器编译image --><!-- <dockerHost>http://175.24.127.215:2375</dockerHost> --><!-- Docker 推送镜像仓库地址 --><pushRegistry>${docker.hub}</pushRegistry><images><image><!--推送到私有镜像仓库,镜像名需要添加仓库地址 --><name>${docker.hub}/00fly/${project.artifactId}:${project.version}-UTC-${maven.build.timestamp}</name><!--定义镜像构建行为 --><build><dockerFileDir>${project.basedir}</dockerFileDir></build></image><image><name>${docker.hub}/00fly/${project.artifactId}:${project.version}</name><build><dockerFileDir>${project.basedir}</dockerFileDir></build></image></images></configuration></plugin>
同时需要在 properties 节点部分定义变量docker.hub、maven.build.timestamp
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.build.timestamp.format>yyyyMMdd-HH</maven.build.timestamp.format><docker.hub>registry.cn-shanghai.aliyuncs.com</docker.hub><java.version>1.8</java.version><skipTests>true</skipTests></properties>
编辑Dockerfile 文件
#基础镜像
FROM openjdk:8-jre-alpineRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone#把你的项目war包引入到容器的root目录下
COPY target/*.war /app.warCMD ["--server.port=8080"]#项目的启动方式
#ENTRYPOINT ["java","-Xmx400m","-Xms400m","-Xmn150m","-Xss1024k","-jar","/app.war", "--spring.profiles.active=prod"]
ENTRYPOINT ["java","-jar","/app.war"]
执行打包命令
mvn clean package
执行结果如下
登录阿里云镜像仓库查看,镜像也已经上传成功!
简单测试
docker run -p 8080:8080 registry.cn-shanghai.aliyuncs.com/00fly/docker-demo:0.0.1
有的同学按上面的步骤实践,就会疑惑,我的怎么报错了!!
其实,这边还有重要的两步没讲。
一。 配置镜像上传账号
还记的镜像仓库-开通访问凭证 那一步设置的密码么。
我们打开本地maven的配置文件settings.xml
注意这边的id参数要跟pom.xml 文件docker.hub取值一致。密码最好以密文方式存储,具体加密方法可参考:
https://blog.csdn.net/u013648164/article/details/81005876
二。 配置docker环境
docker环境配置又2种方式:
- 使用本地docker环境,windows系统可以安装docker desktop
- 启用远程docker环境,需要在pom.xml文件打开如下配置,并在带docker环境的linux服务器上打开相关配置,特别要注意安全问题
有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!
-over-