1 准备工作:

1.1 搭建harbor

因为harbor是基于docker的,并且依赖于docker-compose,所以先要准备好dockers环境再安装好compose工具

1.1.1 docker安装,相关资料很多了,稍微记一下步骤

1.1.1.1 清除旧版本

$ yum update //可以先更新下yum
$ yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

1.1.1.2 设置仓库(官方的比较慢,也可以不设置)

$ yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.1.1.3 安装Docker Engine-Community(这里默认最新的版本,也可以根据需要安装指定版本)

$ yum install docker-ce docker-ce-cli containerd.io

1.1.1.4 查看一下版本

1.1.2安装Docker Compose(可以通过YML文件配置并启动服务)

1.1.2.1 这里用的daocloud的提供的版本,github有点慢

$  curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

1.1.2.2 设置下权限

$  chmod +x /usr/local/bin/docker-compose

1.1.2.3 查看下版本

启动docker

$ systemctl start docker

1.1.3 harbor安装

1.1.3.1 去官网下载安装包

这里是用的1.9.4版本,地址

https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.4.tgz

网速好的话可以直接wget

$ wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offl ine-installer-v1.9.4.tgz

1.1.3.2 解压缩

$ tar xvzf harbor-offline-installer-v1.9.4.tgz

1.1.3.3 修改配置文件,这里主要修改下hostname

$ cd harbor
$ vi harbor.yml
hostname: 你的ip# http related config
http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 80-这里我用maven推送好像必须是80端口

1.1.3.4 初始化并启动harbor

$ ./install.sh

1.1.3.4 查看状态

默认账号amin 密码Harbor12345进入添加一下项目信息,用户信息

1.1.3.5 修改docker配置

docker1.3.2版本后推送的仓库默认是https协议,所以需要修改下配置

$ vim  /etc/docker/daemon.json

如果你是在另一台服务器来推送镜像到当前服务器,需要开放docker的2375端口,防火墙自行处理一下

$ vi /lib/systemd/system/docker.service
在[Service]节点下方增加
ExecStart =
ExecStart =/ usr / bin / dockerd - H tcp : // 0.0.0.0 : 2375 - H unix : // var / run / docker . sock

重启docker

$ systemctl daemon-reload && systemctl restart docker

重启 harbor

$ docker-compose stop // harbor 路径下执行
$ docker-compose start

防火墙改一下

$ firewall-cmd --add-port=2375/tcp --permanent
$ service firewalld restart

1.1.3.6 测试一下子

$ docker pull nginx //拉一个nginx
$ docker login 192.168.0.111 //你的harbor服务器ip
Username: admin
Password:

登陆成功后,对镜像打标签,推送至仓库

$ docker tag [ImageId] harborIp/项目空间:[镜像版本号] //打标签
$ docker tag 8n8n8n8n8n 192.168.0.111/blade/nginx:v2 //例子 blade项目需要提前建好,配制好权限$ docker push harborIp/项目空间:[镜像版本号]    // 推送至harbor
$ docker push 192.168.0.111/blade/nginx:v2 //例子

查看一下

1.2 创建一个SpringBoot测试项目

1.2.1 https://start.spring.io/  生成一个项目用例

1.2.2 导入idea,写一个测试接口

1.2.3 运行一下

2 至此准备工作算是差不多了,剩下的就是配置一些文件推送镜像

2.1 项目根目录建一个Dockerfile,内容参考如下

FROM adoptopenjdk/openjdk8-openj9:alpine-slim
EXPOSE 8080
MAINTAINER smallchill@163.com
WORKDIR app
ADD ./target/demo-latest.jar /app/app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar"]

FROM: 运行jar包需要java环境,这里选的adoptopenjdk/openjdk8-openj9:alpine-slim 镜像

EXPOSE 声明对外端口

WORKDIR  指定工作目录

ADD  类似于COPY

ENTRYPOINT 类似于CMD指令

2.2 修改pom 文件,这里用的是dockerfile-maven-plugin,完整配置文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.docker</groupId><artifactId>demo</artifactId><version>latest</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><docker.username>harbor账号</docker.username><docker.password>harbor账号密码</docker.password><docker.registry.url>harbor ip</docker.registry.url><docker.namespace>blade</docker.namespace></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><!--打包 jar--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!--利用dockerfile-maven-plugin 推送镜像--><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><configuration><username>${docker.username}</username><password>${docker.password}</password><repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository><tag>${project.version}</tag><useMavenSettingsForAuth>true</useMavenSettingsForAuth><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs><skip>false</skip></configuration></plugin></plugins></build></project>

2.3 因为用的是useMavenSettingsForAuth,所以还需要修改一下对应的maven配置文件

位置 /apache-maven-3.6.3/conf/settings.xml

2.3.1 添加一个server

<servers> <server> <id>192.168.0.157</id> <username>harbor账号</username> <password>harbor密码</password> <configuration> <email>docker@163.com</email> </configuration> </server>
</servers

2.3.2 添加一个pluginGroups

<pluginGroups> <pluginGroup>com.spotify</pluginGroup>
</pluginGroups>

2.3.3 项目根目录下执行--等待结果,第一次时间会比较长

$ mvn clean package dockerfile:build dockerfile:push

整个过程提示信息还是很全的,如果有报错,可以去针对性的去处理

2.3.4 看一下仓库,已经有了

用镜像跑一个
docker run -d -p 8080:8080 192.168.1.111/blade/demo

外网访问一下:

至此,整个流程算是跑完了,但是需要做的事情还是挺多的。拉取新的镜像后,旧的镜像怎么处理,停掉的容器怎么清理。如何和jenkins配合等等,后面再说吧。

Maven打包SpringBoot项目镜像并推送至私有Harbor仓库相关推荐

  1. IDEA中使用Docker插件构建镜像并推送至私服Harbor

    IDEA中使用Docker插件构建镜像并推送至私服Harbor 一.开启Docker服务器的远程访问 1.1 开启2375远程访问 1.2 添加harbor镜像配置 1.3 重启docker服务 二. ...

  2. docker eclipse打包_【Docker】Maven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(Eclipse、STS、IDEA、Maven通用)...

    写在前面 最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本 ...

  3. Maven打包SpringBoot项目时出现Test异常

    分享知识 传递快乐 在做 Maven 对 SpringBoot 项目打包时出现以下异常: Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time ...

  4. jenkins构建项目配置及推送阿里云镜像仓库

    使用阿里云的k8s,更新一个项目需要如下步骤: 1.先更新代码 2.再将代码打包生成一个docker镜像,推送到阿里云镜像仓库(私有的) 3.在阿里云上使用新的镜像新启一个docker,并把老的doc ...

  5. 使用maven插件构建docker镜像并推送到阿里镜像仓库

    1.阿里云镜像仓库 阿里云提供了docker镜像仓库,可以上传私有的镜像 2.com.spotify 提供的docker构建插件 docker-maven-plugin <plugin>& ...

  6. SpringBoot项目集成UniPush推送服务

    一.DCLOUD开发者平台uni app开通uni push厂商推送配置 DCLOUD开发者平台开发者中心网址:DCLOUD开发者平台开发者中心 1.Uni Push1.0(老版本) (1)Uni P ...

  7. 如何将编译好的Docker镜像推送至私有Dockerhub仓库?

    1.首先需要在dockerhub新建仓库 Docker Hubhttps://hub.docker.com/repositories新建好之后就不用管它了 2.编译本地镜像 假设你已经有dockerf ...

  8. Maven打包Springboot Docker镜像遇到的问题记录

    缺少或找不到插件: No plugin found for prefix 'docker' in the current project and in the plugin groups [org.a ...

  9. 1.2 SpringBoot构建Docker镜像并推送到Harbor

    1.修改pom 文件中 引入 dockerfile-maven-plugin 插件 1.1 properties 标签中增加如下: <!--项目名,需要和Harbor中的项目名称保持一致 --& ...

最新文章

  1. 放置奇兵 算法 月度活动 破碎时空记录 第七关 阿姨(阿伊达)+暗战(阿斯布)
  2. Oracle的解惑一二to date 与24小时制表示法及mm分钟的显示
  3. java bitset 扩展_将java BitSet保存到DB
  4. 找出占用cpu最高的线程
  5. 系统权限安全责任书_权限越大,责任越大
  6. 滨州智能dcs系统推荐_推荐一:智能变电站监控系统典型作业培训教材
  7. 中国吉非替尼行业市场供需与战略研究报告
  8. ql的python学习之路-day3
  9. linux cpu监控方案,Linux性能优化和监控系列(二)分析CPU性能
  10. vivo x6plus支持html,vivo x6plus手机USB驱动
  11. 计算机中常用计算公式,计算机常用计算公式汇总.doc
  12. Aggressive cows 基础二分
  13. 2022年最新年终奖个人所得税计算计算方法及扣税标准
  14. 大数据三篇论文—The Google File System中文版
  15. 初学C语言对于结构体变量名的一些想当然
  16. 用两个栈实现最小栈的功能
  17. 犀浦某校一名计算机系大二男生,大学生恋爱的案例分析
  18. oracle查看分区名称,oracle学习笔记之 分区表
  19. python 修正系统时差
  20. 面试心得与总结——BAT、网易、蘑菇街 1

热门文章

  1. Telegram图文详解-- 编程机器人(谷歌脚本服务)
  2. 独立开发者:新手做2D手游该用哪些工具
  3. 【100%通过率 】华为OD真题c++/java/python【完美走位】【 2022 Q4 | 100分】
  4. js连接mqtt进行通信
  5. linux内核函数 ffs,linux内核中的宏ffs(x)【转】
  6. 计算机服务器地址在哪里查,查看电脑服务器id地址
  7. 通过Eclipse创建一个Project ,Java Project 和Tomcat Project 生成的目录和文件
  8. html中input中加图片,css怎么在input中插图片
  9. 苹果公司独有的“产品包装艺术”
  10. EasyTV 手机电视