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

news2024/11/26 20:47:04

通过  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:latest
    container_name: iserver-svn
    restart: always
    privileged: true
    ports:
      # 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-network

networks:
  # 首次运行需要提前创建网络 docker network create -d bridge iserver-network , 或者改为 false external: true driver: bridge
  iserver-network:
    external: true
    driver: 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-server
  iserver-svn:
    image: garethflowers/svn-server:latest
    container_name: iserver-svn
    restart: always
    privileged: true
    ports:
      - '3690:3690'
    volumes:
      - './svn/data/:/var/opt/svn/'
      - './svn/config:/var/svn/config'
    networks:
      - iserver-network
      
      
networks:
  # 首次运行需要提前创建网络 docker network create -d bridge iserver-network , 或者改为 false external: true driver: bridge
  iserver-network:
    external: true
    driver: 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.coloradmin.cn/o/1938469.html

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

相关文章

Unity3d打包到Android

本文参考&#xff1a; Unity3D新手教程&#xff1a;如何打包发布到Android_哔哩哔哩_bilibili 一、Unity 打包Android的环境搭建 1、工具安装 Unity Hub已经集成了Android的环境搭建。 选择Add modules 然后安装Android Build Support下的所有工具。 如果各个工具都安装成功…

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

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

【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理

【HarmonyOS】HarmonyOS NEXT学习日记&#xff1a;五、交互与状态管理 在之前我们已经学习了页面布局相关的知识&#xff0c;绘制静态页面已经问题不大。那么今天来学习一下如何让页面动起来、并且结合所学完成一个代码实例。 交互 如果是为移动端开发应用&#xff0c;那么交…

暑假第一周学习内容-ZARA仿写

仿写ZARA总结 文章目录 仿写ZARA总结前言无限轮播图分栏控制器与UIScrollViewUIScorllView的协议部分UISegmentedControl的协议部分 自定义cell 前言 本文主要是用来总结仿写ZARA中遇到的一些问题&#xff0c;以及ZARA中学习到的一些新知识。 无限轮播图 这里我们先给出无限…

Spring Boot 学习(10)——固基(Idea 配置 git 访问 gitee)

几转眼就过了两个月&#xff0c;其实也没有闲着&#xff0c;学也学了&#xff0c;只是繁杂事多&#xff0c;学的不如以前多&#xff0c;也没有做过笔记了。 以前做开发因条件受限&#xff0c;没有什么 git &#xff0c;也没有 gitee。现在出来混要跟上形势才行&#xff0c;学习…

C语言程序设计8

程序设计8 问题8_1代码8_1结果8_1 问题8_2代码8_2结果8_2 问题8_3代码8_3结果8_3 问题8_1 函数 f u n fun fun 的功能是&#xff1a;求 s s ss ss 所指字符串数组中长度最短的字符串所在行下标&#xff0c;作为函数值返回&#xff0c;并把其串长放在形参 n n n 所指的变量中…

2024论文精读:利用大语言模型(GPT)增强上下文学习去做关系抽取任务

文章目录 1. 前置知识2. 文章通过什么来引出他要解决的问题3. 作者通过什么提出RE任务存在上面所提出的那几个问题3.1 问题一&#xff1a;ICL检索到的**示范**中实体个关系的相关性很低。3.2 问题二&#xff1a;示范中缺乏解释输入-标签映射导致ICL效果不佳。 4. 作者为了解决上…

【Android】常用基础布局

布局是一种可用于放置很多控件的容器&#xff0c;它可以按照一定的规律调整内部控件的位置&#xff0c;从而编写出精美的界面&#xff0c;布局内不单单可以放控件&#xff0c;也可以嵌套布局&#xff0c;这样可以完成一些复杂的界面&#xff0c;下面就来认识一些常用的布局吧。…

基于Semaphore与CountDownLatch分析AQS共享模式实现

共享模式与独占模式区别在于&#xff1a;共享模式下允许多条线程同时获取锁资源&#xff0c;而在之前分析的独占模式中&#xff0c;在同一时刻只允许一条线程持有锁资源。 一、快速认识Semaphore信号量及实战 Semaphore信号量是java.util.concurrent(JUC)包下的一个并发工具类…

2-40 基于Matlab编写的3维FDTD(时域有限差分算法)计算了球的RCS经典散射问题

基于Matlab编写的3维FDTD(时域有限差分算法)计算了球的RCS经典散射问题&#xff0c;采用PEC作边界&#xff0c;高斯波束激励。程序已调通&#xff0c;可直接运行。 2-40 3维FDTD 时域有限差分算法 - 小红书 (xiaohongshu.com)

机器学习——降维算法PCA和SVD(sklearn)

目录 一、基础认识 1. 介绍 2. 认识 “ 维度 ” &#xff08;1&#xff09;数组和Series &#xff08;2&#xff09;DataFrame 表 &#xff08;3&#xff09;图像 3. 降维思想 4. 降维步骤 二、降维算法&#xff08;PCA&#xff09; 1. PCA实现 &#xff08;1&#…

免费视频批量横版转竖版

简介 视频处理器 v1.3 是一款由是貔貅呀开发的视频编辑和处理工具&#xff0c;提供高效便捷的视频批量横转竖&#xff0c;主要功能&#xff1a; 导入与删除文件&#xff1a;轻松导入多个视频文件&#xff0c;删除不必要的文件。暂停与继续处理&#xff1a;随时暂停和继续处理。…

7-20FPGA调试日志

1. 在代码里面定义的ILA的变量名称与波形抓取界面的不一致 问题描述 ::: 2. 直接从其他的播放声音的平台放音乐没问题&#xff0c;但是从AU里面生成的2kHz的正弦波放不出声音 演示视频链接 好像和ILA的例化信号有关&#xff0c;例化ILA信号的驱动时钟信号频率没有内部的其他…

Redis-应用

目录 应用 缓存雪崩、击穿、穿透和解决办法? 布隆过滤器是怎么工作的? 缓存的数据一致性怎么保证 Redis和Mysql消息一致性 业务一致性要求高怎么办? 数据库与缓存的一致性问题 数据库和缓存的一致性如何保证 如何保证本地缓存和分布式缓存的一致&#xff1f; 如果在…

电脑永久性不小心删除了东西还可以恢复吗 电脑提示永久性删除文件怎么找回 怎么恢复电脑永久删除的数据

永久删除电脑数据的操作&#xff0c;对于很多常用电脑设备的用户来说&#xff0c;可以说时有发生&#xff01;但是&#xff0c;因为这些情况大都发生在不经意间&#xff0c;所以每每让广大用户感觉到十分苦恼。永久删除也有后悔药&#xff0c;轻松找回电脑中误删的文件。恢复文…

Github 2024-07-20 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-20统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10TypeScript项目1Rust: 构建可靠高效软件的开源项目 创建周期:5064 天开发语言:Rust协议类型:OtherStar数量:92978 个Fork数量:1…

Win10环境将Docker部署到非系统盘

Win10环境将Docker部署到非系统盘 目录 Win10环境将Docker部署到非系统盘 一、Docker官网客户端Docker Hub下载 二、windows环境的安装 三、正确的迁移步骤 3.1、确保你的系统分区至少3G的剩余空间&#xff1b; 3.2、默认方式安装Docker hub&#xff1b; 3.3、打开Dock…

linux操作系统之线程

1.线程概念 线程是一个轻量级进程,每一个线程都属于一个进程 进程是操作系统资源分配的最小单位,而线程是CPU任务调度的最小单位 线程是一个任务执行的过程,包括创建,调度,消亡 创建:线程空间位于进程空间,进程中的线程,栈区独立,并共享进程中的数据区,文本区,堆区 调度:宏观…

微积分-微分应用2(平均值定理)

要得出平均值定理&#xff0c;我们首先需要以下结果。 罗尔定理 设函数 f f f 满足以下三个假设&#xff1a; f f f 在闭区间 [ a , b ] [a, b] [a,b] 上连续。 f f f 在开区间 ( a , b ) (a, b) (a,b) 上可导。 f ( a ) f ( b ) f(a) f(b) f(a)f(b) 则在开区间 ( a , b …

【手撕数据结构】拿捏双向链表

目录 链表介绍初始化链表销毁链表查找节点打印链表增加节点尾插头插在指定位置之后插入节点 删除节点尾删头删删除指定位置节点 链表判空 链表介绍 前面说到&#xff0c;链表的结构一共有八种&#xff1a;带头单向循环链表、带头单向非循环链表、带头双向循环链表、带头双向非…