使用到的东西:
1、阿里云镜像仓库
阿里云提供了docker镜像仓库,可以上传私有的镜像
2、com.spotify 提供的docker构建插件 docker-maven-plugin
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
</plugin>
3、window docker
需要启用 Hyper-V 功能,然后安装docker
具体配置:
1、maven docker-maven-plugin 插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<serverId>docker-aliyun</serverId>
<registryUrl>registry.cn-hangzhou.aliyuncs.com</registryUrl>
<baseImage>java:8</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<imageName>registry.cn-hangzhou.aliyuncs.com/company/image-name</imageName>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
2、修改 ~/.docker/config.json 配置文件
{
"auths": {
"registry.cn-hangzhou.aliyuncs.com": {}
},
"credsStore": "wincred"
}
将以上配置的 "credsStore":"wincred" 去掉,这样在登陆后会将认证保存在此文件中,不然 docker-maven-plugin 获取不到认证信息,导致推送镜像失败
3、在 PowerShell 或 CMD 中登陆 阿里云 docker registry
在阿里云创建仓库后,点击管理可以看到操作指引,比如 登陆、推送、拉取等,登陆命令为:
docker login --username=ali_account@company.com registry.cn-hangzhou.aliyuncs.com
完了之后输入开通镜像仓库 namespace 时输入的密码,完成登陆,登陆之后 ~/.docker/config.json 类似
{
"auths": {
"registry.cn-hangzhou.aliyuncs.com": {
"auth": "ZG9ja2VyQDM2MGVkaW******UAxODU2ODMyNjA0MDgzODA5OkRIQDM2MGVkaWFuIzIwMTch"
}
}
}
其中 auth 就是保存的认证信息
4、现在就可以使用maven命令进行打包推送了
mvn clean package docker:push
完成后可在阿里云中镜像仓库查看,可以在其他地方使用该镜像。
com.spotify:docker-maven-plugin 常用操作有:
docker:build 仅构建docker镜像(不推送)
docker:push 推送镜像到远程仓库