SVN 服务 安装部署 Docker(compose) 方式

通过  dockerhub 或者 命令行运行 : docker search svn  查看 svn  的镜像

如命令行:

[root@SGP ~]# docker search svn
NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
garethflowers/svn-server       A simple Subversion server, using `svnserve`.   67                   [OK]
elleflorio/svn-server          Lightweight Docker container running an SVN …   51                   
krisdavison/svn-server         A pre-configured SVN source control server.     26                   
svnedge/app                    SVN Edge Official Release Image                 14                   
paulovsm/svn-server            Subversion + Apache + SVNAdmin                  9                    
。。。。。。。。。。。。。。。。。

由于我并不清楚 svn 服务相关的配置和端口以及工作目录,所以我选择的是 dockerhub  的方式进行查看,然后选择自己想要的版本

因为,通过 dockerhub 可以查看  镜像 的 tag  然后可以查看 Dockerfile  ,从而得知相关配置信息

dockerhub 网址: https://hub.docker.com/     搜索 : svn-server   关键词 ,结果如下图:

我先选择的的是 第二个:elleflorio/svn-server  (此镜像有可视化设置界面,个人反而不喜欢,增加使用成本,后面补充了第二种方式

然后点击进入 详情,----->> tags  ---->> 选择你要的  tag  (我选的 latest)      ,然后可以看到 镜像相关的配置信息,工作目录,数据卷,暴露端口 等等信息,然后可进行 编写 docker 启动文件

此 Dockerfile 中 ,第二行    CMD ["/bin/sh"]    ,并不是 bash,所以 运行此容器后,进入容器的命令并不是 bash  而是 sh 

 docker exec -it 容器名或者容器id sh   或者(compose 部署的) docker-compose exec 容器名或者容器id sh   


>>>>>>>>>>>>>>>>>> 开干 <<<<<<<<<<<<<<<<<<<<

创建 工作目录:(我个人的  /opt/docker/svn/{data,config})

mkdir /opt/docker/svn/{data,config} -p

编写 docker-compose.yml  容器编排文件: (docker-compose.yml 文件在  /opt/dockr    路径下)

version: '3.0'
services:iserver-svn:image: elleflorio/svn-server:latestcontainer_name: iserver-svnrestart: alwaysprivileged: trueports:# IP映射,格式为:宿主机IP:容器IP,3690是svn端口,443 和 80 是 扩展的可视化SVN管理页面端口,- '3690:3690' - '3680:80' - '3643:443'、# 容器数据卷挂载宿主机,实现持久化,此 镜像文件 elleflorio/svn-server 存在功能扩展,所以配置文件挂载较多,建议使用文章末尾的那个方法的镜像volumes:- './svn/data/:/home/svn/'- './svn/config/passwd:/etc/subversion/passwd'- './svn/config/subversion-access-control:/etc/subversion/subversion-access-control'- './svn/config/httpd.conf:/etc/apache2/httpd.conf'networks:- iserver-networknetworks:# 首次运行需要提前创建网络 docker network create -d bridge iserver-network , 或者改为 false external: true driver: bridgeiserver-network:external: truedriver: bridge

启动运行:(在 /opt/docker   路径下执行,和 docker-compose.yml  文件在同一路径下)

up -d     是静默模式启动,首次启动我想看以下日志,所以 我没有加  -d  ,   

docker-compose up iserver-svn 

以下废话部分是为不熟悉 docker 的朋友提供的,高手请忽略,查看日志的方式,静默模式下启动查看日志  Docker — 从入门到实践 | Docker 从入门到实践:

docker-compose logs -tf --tail 300 iserver-svn

或者

docker logs -tf --tail 300 iserver-svn 

-t : 代表显示时间   f (没记错的话是, flow 跟随,追随,也就是实时打印)

--tail 300  显示尾巴 300 行 

iserver-svn  容器名称,docker-compose 方式启动的,如果不加容器名,则是显示 compose 中编排的所有的容器的日志信息


第一个 SVN 镜像:garethflowers/svn-server

由于镜像  elleflorio/svn-server 的对 SVN 镜像了封装,加入了可视化界面( 容器内为 80 端口 ),加入了权限相关的可视化界面处理,增加了使用成本。

以下提供了 garethflowers/svn-server 镜像的部署方式,且后续的权限,配置 均以 镜像 garethflowers/svn-server 为例

docker 普通运行: ( 此镜像 启动无启动日志输出,启动是会误以为卡主了 )

docker run --name my-svn -d -v /opt/docker/svn/data:/var/opt/svn -v /opt/docker/svn/config:/var/svn/config -p 3690:3690 garethflowers/svn-server

docker-compose 方式:( 此镜像 启动无启动日志输出,启动是会误以为卡主了 )

version: '3.0'
services:# docker run --name my-svn -d -v /opt/docker/svn/data:/var/opt/svn -v /opt/docker/svn/config:/var/svn/config -p 3690:3690 garethflowers/svn-serveriserver-svn:image: garethflowers/svn-server:latestcontainer_name: iserver-svnrestart: alwaysprivileged: trueports:- '3690:3690'volumes:- './svn/data/:/var/opt/svn/'- './svn/config:/var/svn/config'networks:- iserver-networknetworks:# 首次运行需要提前创建网络 docker network create -d bridge iserver-network , 或者改为 false external: true driver: bridgeiserver-network:external: truedriver: bridge


SVN 服务权限相关配置

SVN 权限核心配置文件就是四个:

1、密码配置文件:           passwd 

2、权限分配配置文件       authz     (可以包含分组信息管理)

3、分组信息管理文件:   groups      (可选的,若配置此文件,则 authz 文件中的  [groups]  将失效)

4、SVN 项目配置文件:   svnserver.conf   ,每创建一个项目,将自动生成 路径为: 你项目的路径/conf/svnserver.conf


抽取全局权限文件统一管理:

配置文件挂载到宿主机,方便修改:

1、passwd:    用户名密码 配置文件

# 用户名密码设置
[users]# 超级管理员
admin = admin_NB# 技术部人员信息 (张三李四)
zhangsan= zhangsn@8888
lisi = lisi@8888# 运营部人员信息
xxx = xxx@8888

2、authz:授权文件

[aliases]
joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average###################################### 分组管理用户(可以直接到下一步 groups 文件中单独管理) #########################
[groups]
# 全体人员
All_MEMBER = admin,zhangsan,lisi# 技术研发部
YanFaBu = zhangsan,lisi########################################### 权限分配 r 读,w 写################################################ 管理员所有项目都具备读写权限
[/]
admin = rw# 运营部的 svn 项目文件 只有运营部的人员具备读取读写权限,其他人无权限
[运营部:/]
@YunYingBu = rw# 技术研发部的 SVN 项目文件,只有技术研发部分组用户具有读写权限
[技术部:/]
@YanFaBu = rw
# 给某某某这个用户名分配只读的权限
某某某 = r[行政部:/]
@XinZhengBu = rw# 随手创建一个 test ,所有用户可以 读,不可写 
[test:/]
@All_MEMBER = r
# 或者可以这样配置,所有人可以访问
* = 

可选的,如果以上第二步中,authz 文件中已经配置了 [groups]  则无需单独提去出来一个 groups 文件,但是如果 独立提去出 groups 文件了,则 authz 中的 [groups]  将失效 

[groups]
# 全体人员
All_Member = admin,zhangsan,lisi# 技术研发部
YanFaBu = xuganglei,zhangsan,lisi# 运营部
YunYingBu = zhangsan,lisi# 行政部
XinZhengBu = zhangsan# 财务部
CaiWuBu = xxxxx,xxx,xxx,xxx,xxxx


创建项目:

具体使用如下:( 以创建一个部门:技术部为例 )

1、进入容器: iserver-svn

docker exec -it iserver-svn(你容器的名称或ID) /bin/sh   # (/bin/sh   可简化 sh) 或 在 docker-compose.yml 文件路劲docker-compose exec iserver-svn sh 

2、创建项目:在容器中的工作目录:/var/opt/svn/   执行命令创建一个项目(这里我以创建部门为例,我使用的是中文,建议使用英文,使用中文感觉很愚蠢,不知道后续为不会有问题)

/var/opt/svn # pwd
/var/opt/svn
/var/opt/svn # svnadmin create 技术部(这个是你的项目名称,建议使用英文名)

3、配置文件配置:创建完项目之后,后续的操作可以在容器内操作,也可以直接在 宿主机上操作

创建完成的项目结构如下,

/var/opt/svn/技术部 # ls
README.txt  conf        db          format      hooks       locks

配置文件就在 conf 路径下:(其实刚创建好的时候还有两个配置文件的,passwd、authz 因为我的权限文件统一管理在外层,所以被我删除了)

/var/opt/svn/技术部/conf # ls
hooks-env.tmpl  svnserve.conf

svnserve.conf   主要配置的内容如下:

[general] # 配置 匿名用户 / 授权用户 读写权限,read 读权限,write 写权限,none 表示什么权限都没有 anon-access = none auth-access = write # 配置用户密码文件,便于管理,我的是抽取到了全局配置中进行管理 password-db = /var/svn/config/passwd # 用户权限配置文件 authz-db = /var/svn/config/authz # 用户分组管理文件,这个配置是可选的,可以将分组配置信息配置到 authz 文件中 groups-db = /var/svn/config/groups # 项目的路径 realm = /opt/xxx/xxx 可以是路径的形式 realm = 技术部

复制代码

至此,一个项目就配置完成了

连接: svn://ip:port/项目名称   ;比如  :svn://192.168.1.188:3690/技术部

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

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

相关文章

景联文科技构建高质量心理学系知识图谱,助力大模型成为心理学科专家

心理大模型正处于快速发展阶段&#xff0c;在临床应用、教育、研究等多个领域展现出巨大潜力。 心理学系知识图谱能够丰富心理大模型的认知能力&#xff0c;使其在处理心理学相关问题时更加精确、可靠和有洞察力。这对于提高心理健康服务的质量和效率、促进科学研究以及优化教育…

【Django】网上蛋糕商城后台-订单管理

概念 前面通过多篇文章以完全实现了用户在网上蛋糕商城平台上的所有功能和操作&#xff0c;从本文开始&#xff0c;实现网站的后台管理功能的介绍和操作。 导入静态资源 在static文件夹下&#xff0c;创建admin文件夹&#xff0c;在该文件夹下导入静态资源 在templates文件夹…

cs224w笔记(p5)

链接预测任务的两种类型&#xff1a;随机缺失边&#xff1b;随时间演化边。 第一种假设可以以蛋白质之间的交互作用举例&#xff0c;缺失的是研究者还没有发现的交互作用。 第二种假设可以以社交网络举例&#xff0c;随着时间流转&#xff0c;人们认识更多朋友。 基于相似性进…

zookeeper+kafka消息队列集群部署

一.消息队列 1、什么是消息队列 消息&#xff08;Message&#xff09;是指在应用间传送的数据。消息可以非常简单&#xff0c;比如只包含文本字符串&#xff0c;也可以更复杂&#xff0c;可能包含嵌入对象。 消息队列&#xff08;MessageQueue&#xff09;是一种在软件系统中用…

1、springboot3 vue3开发平台-后端-项目构建

文章目录 1. 创建项目1.1 前置环境条件1.2 项目创建 2. 模块配置2.1 父工程配置概述2.2 配置启动模块2.3 父工程相关依赖管理 1. 创建项目 1.1 前置环境条件 idea2023, jdk17 1.2 项目创建 创建父工程并删除不需要的文件目录&#xff1a; 右键父工程依次创建其他模块 最…

Windows 、Linux、MacOS 进程管理机制

本心、输入输出、结果 文章目录 Windows 、Linux、MacOS 进程管理机制前言Windows 进程管理机制Linux 进程管理macOS 进程管理内存不够了,几个操作系统如何处理Windows 、Linux、MacOS 进程管理机制 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_15071263 …

【Qt】窗口

文章目录 QMainWindow菜单栏工具栏状态栏浮动窗口对话框自定义对话框Qt内置对话框QMessageBox QMainWindow Qt中的主窗口以QMainWindow表示&#xff0c;其总体结构如下&#xff1a; 菜单栏 菜单栏MenuBar&#xff0c;可包含多个菜单Menu&#xff0c;每个菜单也可以包含多个菜…

03 Git的基本使用

第3章&#xff1a;Git的基本使用 一、创建版本仓库 一&#xff09;TortoiseGit ​ 选择项目地址&#xff0c;右键&#xff0c;创建版本库 ​ 初始化git init版本库 ​ 查看是否生成.git文件&#xff08;隐藏文件&#xff09; 二&#xff09;Git ​ 选择项目地址&#xff0c…

【LeetCode】相同的树

目录 一、题目二、解法完整代码 一、题目 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3],…

FastGPT 知识库搜索测试功能解析

目录 一、代码解析 1.1 searchTest.ts 1.2 controller.ts 本文接上一篇文章FastGPT 知识库搜索测试功能解析 对具体代码进行解析。 一、代码解析 FastGPT 知识库的搜索测试功能主要涉及两个文件&#xff0c;分别是 searchTest.ts 和 controller.ts 文件&#xff0c;下面分…

运行springboot项目报错:java: java.lang.NoSuchFieldError: members_field

项目场景&#xff1a; 在idea中运行从git上拉取的基于springboot框架的项目运行报错 问题描述 运行spingboot项目报错 java: java.lang.NoSuchFieldError: members_field原因分析&#xff1a; 检查你所使用的java版本&#xff08;我这里是在idea上运行的&#xff0c;可以很直…

ArkTS语言---基础知识

ArkTS是一种为构建高性能应用而设计的编程语言。ArkTS在继承TypeScript语法的基础上进行了优化&#xff0c;以提供更高的性能和开发效率。目前流行的编程语言TypeScript是在JavaScript基础上通过添加类型定义扩展而来的&#xff0c;而ArkTS则是TypeScript的进一步扩展。TypeScr…

DETR算法解读——Transformer在目标检测任务的首次应用

论文&#xff1a;End-to-End Object Detection with Transformers 作者&#xff1a;Nicolas Carion, Francisco Massa, Gabriel Synnaeve, Nicolas Usunier, Alexander Kirillov, Sergey Zagoruyko 机构&#xff1a;Facebook AI 链接&#xff1a;https://arxiv.org/abs/2005.12…

git教程, 命令行版

前言 git就是代码版本管理系统&#xff0c;很简单的作用就是每一次commit之后&#xff0c;修改文件都是跟上一次commit的仓库文件做对比&#xff0c;也可以调出历史的文件查看某次commit修改了什么东西 0环境准备&#xff1a; 安装git, 百度一下&#xff0c;然后打开cmd&…

Django 执行原生SQL

在Django中&#xff0c;你可以使用Raw SQL queries来执行原生的SQL查询。这对于需要进行复杂查询或Django的ORM无法满足的查询非常有用。 1&#xff0c;添加模型 Test/app11/models.py from django.db import modelsclass Post(models.Model):title models.CharField(max_le…

视频压缩文件太大了怎么缩小?怎么压缩视频大小?视频压缩方法:10个!(宝藏)

视频压缩文件太大了怎么缩小&#xff1f;让我看看是谁下班之后不是一手刷手机短视频&#xff0c;顺便葛优躺在沙发上的&#xff1f;互联网发展到现在&#xff0c;视频已成为我们生活中不可或缺的一部分。不管是视频录制还是视频缓存&#xff0c;视频文件体积越来越庞大&#xf…

reserve和resize

void test_vector4() {vector<int> v1;//cout << v1.max_size() << endl;//v1.reserve(10);v1.resize(10);for (size_t i 0; i < 10; i){v1[i] i;}for (auto e : v1){cout << e << " ";}cout << endl;} 在上面这段代码中对…

使用shedlock实现分布式互斥执行

前言 前序章节&#xff1a;springboot基础(82):分布式定时任务解决方案shedlock 如果你不清楚shedlock&#xff0c;建议先阅读前序章节&#xff0c;再来查看本文。 如果我们不在spring环境下&#xff0c;如何使用shedlock实现分布式互斥执行&#xff1f; 我们可以使用shedl…

深入理解CSS基础【代码审计实战指南】

文章目录 为什么需要cssCSS语法CSS的组成css注释&#xff1a; 快速入门示例&#xff1a;常用样式字体颜色和边框颜色介绍颜色示例&#xff1a;边框边框的宽度与高度 字体样式背景样式文本居中 字体颜色和边框颜色介绍颜色示例&#xff1a;边框边框的宽度与高度 字体样式背景样式…

硬件开发笔记(二十七):AD21导入DC座子原理图库、封装库,然后单独下载其3D模型融合为3D封装

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140541464 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…