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 stop


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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ基础笔记

视频链接&#xff1a;【黑马程序员RabbitMQ入门到实战教程】 文章目录 1.初识MQ1.1.同步调用1.2.异步调用1.3.技术选型 2.RabbitMQ2.1.安装2.1.1 Docker2.1.1 Linux2.1.1 Windows 2.2.收发消息2.2.1.交换机2.2.2.队列2.2.3.绑定关系2.2.4.发送消息 2.3.数据隔离2.3.1.用户管理2…

金三银四面试题(七):JVM常见面试题(1)

JVM会有许多零碎但是却很高频的基础考题。牢记这些&#xff0c;才能保证不在面试中落后于人。 说说对象分配规则 这也是之前面试腾讯时候被问到的问题&#xff1a;请介绍JVM如何分配对象&#xff1f; 对象优先分配在Eden 区&#xff0c;如果Eden 区没有足够的空间时&#xf…

nysm:一款针对红队审计的隐蔽型后渗透安全测试容器

关于nysm nysm是一款针对红队审计的隐蔽型后渗透安全测试容器&#xff0c;该工具主要针对的是eBPF&#xff0c;能够帮助广大红队研究人员在后渗透测试场景下保持eBPF的隐蔽性。 功能特性 随着基于eBPF的安全工具越来越受社区欢迎&#xff0c;nysm也应运而生。该工具能保持各种…

简单线程池的实现

线程池的代码可以写的很复杂&#xff0c;这里就稍微简单一些 首先来看一下线程池的原则&#xff0c;下面的大框是服务器&#xff0c;而在服务器中维护一个任务队列。 然后在server中预先创建一批线程&#xff0c;这批线程和任务队列合在一起只用向外界提供一个入队列的接口。 …

【php程序开发从入门到精通】——搭建PHP开发环境

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

搜索与图论——Floyd算法求最短路

floyd算法用来求多源汇最短路 用邻接矩阵来存所有的边 时间复杂度O(n^3) #include<iostream> #include<cstring> #include<algorithm>using namespace std;const int N 20010,INF 1e9;int n,m,k; int g[N][N];void floyd(){for(int k 1;k < n;k ){f…

计算机网络(第八版)-第1章课后习题参考答案

计算机网络(第八版)-第1章课后习题参考答案 本文是对自己之前文章的格式化&#xff1a;https://blog.csdn.net/qq_46396470/article/details/132788972?spm1001.2014.3001.5502 T1-01 计算机网络向用户可以提供哪些服务&#xff1f; 连通性和共享 &#xff0c;例如音频&…

docker环境配置过程中的常见问题

1、pull镜像问题 docker pull jenkins/jenkins:lts Using default tag: latest Trying to pull repository docker.io/library/centos ... Get https://registry-1.docker.io/v2/library/centos/manifests/latest: Get https://auth.docker.io/token?scoperepository%3Alibr…

基于Spring Boot 3 + Spring Security6 + JWT + Redis实现接口资源鉴权

紧接上一篇文章&#xff0c;基于Spring Boot 3 Spring Security6 JWT Redis实现接口资源鉴权 系列文章指路&#x1f449; 系列文章-基于SpringBoot3创建项目并配置常用的工具和一些常用的类 项目源码&#x1f449; /shijizhe/boot-test 文章目录 1. 修改 UserDetailsServic…

(学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

在ubuntu上搭建系统监控系统

大纲 数据生产方安装和运行验证 数据收集、存储和分发方下载和解压修改配置运行验证 数据消费方下载和运行验证新增数据源新增看板关联看板和数据源效果展现 参考资料 在一个监控系统中&#xff0c;一定会有“数据生产方”和“数据消费方”存在。“数据生产方”用于产出需要监控…

三个表的联合查询的场景分析-场景4:c表维护a和b表的id关联关系(一对多)

基础SQL演练&#xff0c;带详细分析&#xff0c;笔记和备忘。 目录 背景介绍 表数据 需求1&#xff1a;查询g表所有记录&#xff0c;以及关联的h的id 需求2&#xff1a;在需求1基础上&#xff0c;查出关联的h的其它字段&#xff08;name&#xff09; 需求3&#xff1a;在需…

Java基本语法(变量,数据类型,关键字、)

目录 什么是变量 声明 声明方式 赋值方式 声明的同时进行赋值 变量命名规范 字符组成&#xff1a;变量名可以包含以下字符&#xff1a; 开头限制&#xff1a; 空格禁止&#xff1a; 关键字/保留字&#xff1a; 大小写敏感&#xff1a; 长度限制&#xff1a; 推荐风…

软考101-上午题-【信息安全】-网络安全

一、网络安全 1-1、安全协议 SSL(Secure Socket Layer&#xff0c;安全套接层)是 Netscape 于 1994年开发的传输层安全协议&#xff0c;用于实现 Web 安全通信。1996 年发布的 SSL3.0 协议草案已经成为一个事实上的Web 安全标准。 端口号是43。 SSL HTTP HTTPS TLS(Transpo…

FL Studio21中文版百度云网盘下载及切换中文语言教程

FL Studio 21&#xff0c;即广为人知的“水果”软件&#xff0c;拥有众多强大的功能&#xff0c;满足了音乐制作人在创作过程中的各种需求。 首先&#xff0c;它具备出色的多轨道音频录制功能&#xff0c;能够同时处理多个音频轨道的录制&#xff0c;非常适合制作复杂的音乐作…

K8s Pod亲和性、污点、容忍度、生命周期与健康探测详解(中)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 在上一章节中&#xff0c;我们详细探讨了Pod的亲和性&…

基于 StarRocks 的风控实时特征探索和实践

背景 金融风控特征是在金融领域中用于评估和管理风险的关键指标。它们帮助金融机构识别潜在风险&#xff0c;降低损失&#xff0c;并采取措施规避风险。例如&#xff0c;用户最后一次授信提交时间就是一个重要的金融风控特征。 金融风控实时特征场景是一个典型的大数据实时业务…

代码随想录算法训练营 DAY 24 | 回溯理论基础 77.组合 + 剪枝优化

回溯理论 回溯法就是递归函数&#xff0c;纯暴力搜索 解决的问题 组合&#xff08;无顺序&#xff09; 1 2 3 4 给出大小为2的所有组合 切割字符串 子集问题 1 2 3 4&#xff0c;子集有1 2 3 4,12,13,14&#xff0c;…123 124… 排列&#xff08;有顺序&#xff09; 棋盘…

OpenAI发布Voice Engine模型!用AI合成你的声音!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

合集:JS异步的六个解决方案详解。

Hello&#xff0c;各位老铁&#xff0c;最近发表了js异步的解决方案&#xff0c;是分开发的&#xff0c;这次我把他汇总起来&#xff0c;方便大家收藏、查看&#xff0c;欢迎点赞评论私信交流。 01.详解&#xff1a;JS异步解决方案之回调函数&#xff0c;及其弊端 02.详解&…