SpringBoot构建Docker镜像
前言
拒绝手动构建 Docker 镜像,本文将分别演示 Spring 官方与 fabric8io 的 docker-maven-plugin 插件,Build 期间自动构建镜像,并 push 到私有仓库,为 CI/CD 提供支持。
自建 Docker 私有仓库
本机安装 dokcer 环境,这里不再赘述,自行百度。
macOS 系统推荐使用 Homebrew 进行安装。brew install –cask docker
私有仓库也是一个 docker 镜像,我们这里使用 Docker Registry。
1
2
3
4# 拉取镜像
docker pull registry:latest
# 启动容器
docker run -d -p 5088:5000 --restart always --name registry registry:latest-d 代表后台运行
-p 5088:5000 代表宿主机5088端口映射到容器的5000端口
–restart always 代表 Docker 启动的时候运行该容器
按照官方文档使用 ubuntu 镜像进行测试。
1
2
3
4
5
6
7
8# 拉取 ubuntu 镜像
docker pull ubuntu
# 更改镜像,使其指向私有仓库
docker image tag ubuntu localhost:5088/myfirstimage
# 查看镜像列表确认要操作的镜像仓库名称
docker images
# push 到私有仓库
docker push localhost:5088/myfirstimage打开私有仓库地址
http://localhost:5088/v2/_catalog如果能看到推送的镜像 myfirstimage 就说明成功了。
SpringBoot 打包推送到私有仓库
Spring 官方插件
添加 maven 插件 官方文档
1 | <plugin> |
需要SpringBoot 版本 2.4 及以上
publishRegistry.username 与 publishRegistry.password 可以任意填写
构建的时候会从 GitHub 下载依赖没有代理的话很容易报错。
执行 mvn clean package spring-boot:build-image -Dmaven.test.skip=true 等待完成。
再次进入 http://localhost:5088/v2/_catalog 查看是否 push 成功。
fabric8io 插件
添加 maven 插件
1 | <plugin> |
Dockerfile
1 | FROM openjdk:8-jdk-alpine |
执行 mvn clean package docker:build docker:push -Dmaven.test.skip=true 等待完成。
http://localhost:5088/v2/{镜像名称}/tags/list查看具体镜像的版本
总结
今天介绍了如何搭建私有仓库,并用 ubuntu 镜像进行了测试,以及使用 SpringBoot 构建 Docker 镜像推送到私有仓库。
官方插件需要网络支持(代理)并且不需要编写 Dockerflie,相对来说更加方便,如果只是简单的使用并且网络情况良好推荐使用官方插件,如果想要在 Dockerfile 中有更多操作或者网络不是那么好的情况下推荐使用 fabric8io。