Harbor部署

Harbor部署

下载和安装

  1. github下载地址:https://github.com/goharbor/harbor/releases

在这里插入图片描述

  1. 解压和配置
# 解压tgz包
tar -zxvf harbor-offline-installer-v2.10.1.tgz 
# 进入目录后进行复制配置文件
cd harbor/
# 创建一个配置文件
cp harbor.yml.tmpl harbor.yml    
# 修改配置文件
vim harbor.yml    

在这里插入图片描述

在这里插入图片描述

在我的当前版本中默认密码修改后无法访问,需要查看数据库密码

# 进入容器
docker exec -it harbor-core bash 	
# 查看密码
printenv | grep PASSWORD 

在这里插入图片描述

  1. 安装Harbor
sh install.sh

如果在安装过程中出现下载失败等,是因为不是国内镜像,下面介绍下怎么配置多个镜像

编辑docker镜像文件

vim /etc/docker/daemon.json

在文件中加上

{"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","http://f1361db2.m.daocloud.io","https://mirror.ccs.tencentyun.com","https://phtv51hj.mirror.aliyuncs.com"]
}

启动和访问

启动相关命令

这个启动方式需要在你的目录/harbor/下执行,我的当前目录是/root/harbor/所以需要在这个目录下启动,否则会报找不到指定文件等错误。

# 关闭 Harbor
docker compose -f docker-compose.yml stop   
# 启动 Harbor
docker compose -f docker-compose.yml up -d    

访问Harbor

使用上面查看到的密码进行访问

在这里插入图片描述

登录后可以修改密码登相关操作

在这里插入图片描述

设置访问权限

为了简单,我将系统防火墙关了,设置docker安全访问权限。

编辑daemon.json文件

# 编辑/etc/docker/daemon.json文件
vim /etc/docker/daemon.json

填写内容

插入相关内容,填入你的IP地址

"insecure-registries"配置安全推送地址,不设置无法推送!!!

数组中可以有多个地址。

{"registry-mirrors": ["https://gwsg6nw9.mirror.aliyuncs.com"],"insecure-registries": ["192.168.1.4:1100"]
}

在这里插入图片描述

设置完成后重启docker

# 重启docker
systemctl restart docker

部署Java程序

设置账户信息

在maven的settings.xml文件中配置harbor服务的账号信息

<server><id>harbor</id><username>admin</username><password>565386</password><configuration><email>1319900154@qq.com</email></configuration>
</server>

引入依赖插件

需要注意的是,我这个版本的harbor必须要新建项目名称,不能自动新建!!!

在这里插入图片描述

docker.registry.name相关内容放入到properties中,因为下面有很多重复使用,所以放在公共配置中。

将下面内容复制到项目的pom.xml文件中,是复制到服务的配置文件中,每次启动服务的项目中,不需要将这个放在实体类,也不要放在总项目的父工程。

微服务,每个都单独配置下,上传地址,地址为你的微服务使用的服务器地址。在docker.repostory中配置和dockerHost中配置你服务器的地址,注意端口号和IP地址不要写错。

如果你的项目是微服务项目请将这个内容复制到所有的微服务的工程pom文件中,如下面图片所示。这样在打包时会自动打包并上传微服务工程。

在这里插入图片描述

<properties><docker.repostory>192.168.1.4:1100</docker.repostory><docker.registry.name>spzx</docker.registry.name><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>  <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><skip>true</skip></configuration></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.2</version><!--将插件绑定在某个phase执行--><executions><execution><id>build-image</id><!--将插件绑定在package这个phase(阶段)上。也就是说,用户只需执行mvn package,就会自动执行mvn docker:build--><phase>package</phase><goals><goal>build</goal><goal>push</goal></goals></execution></executions><configuration><serverId>harbor</serverId><registryUrl>http://${docker.repostory}</registryUrl><!-- 配置docker主机地址 --><dockerHost>http://192.168.1.4:2375</dockerHost><!--指定生成的镜像名--><imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}</imageName><!-- 指定 dockerfile 路径--><dockerDirectory>${project.basedir}</dockerDirectory><!-- 是否跳过docker构建 --><skipDockerBuild>false</skipDockerBuild></configuration></plugin></plugins></build>

第一次使用可能吧不太清楚

  1. 要点一

    • 因为我们放入的是私有仓库,所以格式一定要为你的IP地址/项目名称/容器名称:容器tag,如果不指定${docker.repostory}那么会默认推送到公共仓库,不是私有仓库!!!
    • 例如:192.168.1.4:1100/spzx/容器名称/tag版本
    • 192.168.1.4:1100是你的harbor地址,这样就会推送到harbor仓库中!!!
    <imageName>
    ${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}
    </imageName>
    
  2. 要点二

    • 我这个版本的harbor是必须要新建项目名称的,如果不新建会推不上去!!!
    • 在这里插入图片描述

开启docker远程访问

#修改该文件
vim /lib/systemd/system/docker.service

添加以下内容

# 方式一
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
# 方式二
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock

重启服务

systemctl daemon-reload				#重启守护进程
systemctl restart docker			#重启docker

在这里插入图片描述

编写Dockerfile

Dockerfile仅供参考!!!

这里设置了系统时间,如果不需要可以删除

FROM openjdk:17
MAINTAINER bunny#系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8# 设置时区,构建镜像时执行的命令
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone# 设定工作目录
WORKDIR /home/bunny# 复制jar包
COPY target/*.jar /home/bunny/app.jar#启动容器时的进程
ENTRYPOINT ["java","-jar","/home/bunny/app.jar"]#暴露 8080 端口
EXPOSE 8501

maven打包

Dockerfile文件放在与pom文件同级。如下如图所示。

在这里插入图片描述

执行命令在总的父工程下执行

在这里插入图片描述

mvn clean package -DskipTests								# 打包跳过测试
mvn clean package -DskipTests -DskipdockerBuild				# 打包跳过测试的同时提高构建

推送完成以及要点

  1. 要配置maven的serve内容,因为推送需要登录!!!
  2. 注意pom.xml文件中build标签内容,里面推送格式必须为你的IP地址/项目名称/容器名称:容器tag
  3. registryUrl要加http开头并且是harbor的地址
  4. dockerfile放在pom同级目录

在这里插入图片描述

相关重要命令

# 重启守护进程
systemctl daemon-reload
# 重启docker
systemctl restart docker
# 启动 Harbor
docker compose -f docker-compose.yml up -d
# 关闭 Harbor
docker compose -f docker-compose.yml stopmvn clean package -DskipTests								# 打包跳过测试
mvn clean package -DskipTests -DskipdockerBuild				# 打包跳过测试的同时提高构建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/578592.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle利用BBED恢复崩溃实例(ORA-01092,ORA-00704,ORA-01578)

BBED修复数据损坏引起的数据库崩溃&#xff08;ORA-01092,ORA-00704,ORA-01578&#xff09;(2021年某苏州国企的案例&#xff09; 1.Symptom 用户一个边缘系统出现数据文件损坏&#xff0c;且没有备份&#xff0c;数据库无法启动 报错如下&#xff0c;发现是oracle bootstra…

pnpm、monorepo分包管理、多包管理、npm、vite、前端工程化、保姆级教程

浅尝pnpm monorepo 多包管理方案 &#x1f4a1;tips: 创建pnpm monorope多包管理框架流程 初始化 mkdir taurus & cd taurus pnpm init创建基础文件 创建文件pnpm-workspace.yaml packages:- packages/**创建文件夹packages/ -packages/ -package.json -pnpm-workspace…

Net8 ABP VNext完美集成FreeSql、SqlSugar,实现聚合根增删改查,完全去掉EFCore

没有基础的&#xff0c;请参考上一篇 彩蛋到最后一张图里找 参考链接 结果直接上图&#xff0c;没有任何业务代码 启动后&#xff0c;已经有了基本的CRUD功能&#xff0c;还扩展了批量删除&#xff0c;与动态查询 动态查询截图&#xff0c;支持分页&#xff0c;排序 实现原理…

《让你的时间多一倍》逃离时间陷阱,你没有自己想的那么懒 - 三余书屋 3ysw.net

让你的时间多一倍 今天我们来阅读法比安奥利卡尔的作品《让你的时间多一倍》。或许你会心生疑虑&#xff0c;这本书是否又是一本沉闷的时间管理指南&#xff1f;但我要告诉你的是&#xff0c;尽管时间管理这个话题已经为大众所熟知&#xff0c;这本书却为我们揭示了一个全新的…

SpringBoot实现RabbitMQ的定向交换机(SpringAMQP 实现Direct定向交换机)

文章目录 Direct 交换机特点实战声明交换及其队列(以注解方式)发消息 应用 上一篇文章中的 Fanout 模式&#xff0c;一条消息&#xff0c;会被所有订阅其交换机的队列都消费。 但是&#xff0c;在某些场景下&#xff0c;我们希望不同的消息被不同的队列消费。这时就要用到 Dir…

RabbitMQ 延时消息实现

1. 实现方式 1. 设置队列过期时间&#xff1a;延迟队列消息过期 死信队列&#xff0c;所有消息过期时间一致 2. 设置消息的过期时间&#xff1a;此种方式下有缺陷&#xff0c;MQ只会判断队列第一条消息是否过期&#xff0c;会导致消息的阻塞需要额外安装 rabbitmq_delayed_me…

实时语音识别(Python+HTML实战)

项目下载地址&#xff1a;FunASR 1 安装库文件 项目提示所需要下载的库文件&#xff1a;pip install -U funasr 和 pip install modelscope 运行过程中&#xff0c;我发现还需要下载以下库文件才能正常运行&#xff1a; 下载&#xff1a;pip install websockets&#xff0c;pi…

三大热门猫咪主食冻干测评:希喂、VE、PR主食冻干PK

很多铲屎官在选购主食冻干时进口、国产犹豫不决&#xff0c;总觉得进口的主食冻干品控、配方会比国产的更好&#xff0c;但是进口的营养指标又不如国产、价格也令人望而却步。正是这样的摇摆不定&#xff0c;最后抱着试一试的心态盲入主食冻干&#xff0c;运气好的买回家的主食…

基于递归残差U-Net的医学图像分割

基于递归残差U-Net的医学图像分割 摘要相关工作方法---3 RU-Net and R2U-Net Architectures---3 RU-Net和R2 U-Net架构 【2019】Recurrent residual U-Net for medical image segmentation 摘要 基于深度学习&#xff08;DL&#xff09;的语义分割方法在过去几年中一直提供最先…

YoloV8实战:使用YoloV8检测钢材表面缺陷

摘要 本文讲解一下实战,使用YoloV8检测钢材表面缺陷。起因是有粉丝搞不定这个数据集,检测的时候出现了不收敛的情况。所以,给大家讲讲如何去做。 不收敛的原因 一般遇到不收敛的情况,就是数据转化的时候出错了,大家可以打开runs下面的训练日志,观察一下是否正常。 如…

js动态设置页面高度

准备一个div <div class"card-edit"><!-- 业务需求 --> </div>开始操作 // 获取页面的中需要设置高度的元素 如&#xff1a;card-editconst autoStyle document.getElementsByClassName(card-edit)[0]// 根据业务需求做判断// 此处设定&#…

利用HIVE的窗口函数进行SQL查询中出现的问题记录

student_info部分数据 score_info部分数据 course_info 1、问题复现 --完整SQL selectsti.stu_id,sti.stu_name,concat_ws(",",collect_set(ci.course_name)) over(partition by sti.stu_id) fromstudent_info sti left joinscore_info sci onsti.stu_idsci.stu_id l…