Docker搭建SVN服务器的实现步骤

 更新时间:2025年11月06日 08:36:12   作者:月生_  
本文主要介绍了Docker搭建SVN服务器的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

序言

本篇文章只介绍如何在 Linux 服务器上安装 SVN,客户端工具的使用不做介绍。 下面的文章以 Centos 8 系统来做为 Linux 服务器,对于其他版本的服务器可以参考官方文档。

检查环境

查看系统下有没有安装过或有安装过老版本的 SVN,如果没有安装,则什么都不会显示

[root@localhost ~]# rpm -ql subversion 
未安装软件包 subversion

如果有老版本的话先删除一下老版本

[root@localhost opt]# yum -y remove subversion 
未找到匹配的参数: subversion 
没有软件包需要移除。 
依赖关系解决。 
无需任何处理。 完毕! 
[root@localhost opt]#

下载安装

我这里建议通过 docker 来安装 svnserver

# 下载镜像
docker pull garethflowers/svn-server
# 创建svn仓库目录,进入svn仓库目录, 用于挂载数据
mkdir -p /var/svn/repos  /var/svn/conf 

启动svn容器

docker run -d \
  --name svn-server \
  -p 3690:3690 \
  -v /var/svn/repos:/var/opt/svn \
  -v /var/svn/conf:/etc/subversion \
  --restart=always \
  garethflowers/svn-server

参数说明:

  • -p 3690:3690:映射 SVN 默认端口
  • -v:挂载本地目录到容器,实现数据持久化
  • --restart=always:设置容器随 Docker 自动启动

创建项目和配置权限

创建项目需要进入 SVN 容器内部创建,命令为: docker exec -it svn-server /bin/sh

成功后的界面如下:

[root@localhost svn]# docker exec -it svn-server /bin/sh 
/ #

接下来我们创建一个仓库,并配置用户和读写权限 svnadmin create /var/opt/svn/myproject 这里仓库就已经创建完毕了,这个仓库会同步到主机的 /var/svn/repos 目录下。

[root@localhost repos]# pwd 
/var/svn/repos 
[root@localhost repos]# ll 
总用量 4 drwxr-xr-x. 6 root root 4096 8月 20 10:15 myproject 
[root@localhost repos]#

接下来,我们来进行 SVN 仓库的配置,仓库的配置文件就位于 conf 目录下

这里有三个重要的配置文件

  • authz: 负责账号权限的管理,控制账号是否读写权限
  • passwd: 负责账号和密码的用户名单管理
  • svnserve.conf: svn 服务器配置文件

配置用户密码

编辑 passwd 文件, 添加两个用户, 格式为:用户名 = 密码

配置权限控制

这里通过用户组来进行权限控制,单个用户的控制比较麻烦,不进行演示,在公司里面大多都是以用户组来控制权限的。auhtz配置文件中的每个参数,开头不能有空格,对于组要以@开头,用户不需要。

[groups]部分:定义用户组

# 这里两个用户分别对应上面创建的用户
[groups]
admin_group = admin
test_group = test
  • 作用:将多个用户归类到 “用户组”,方便批量管理权限(避免对每个用户单独设置权限)。
  • 格式:组名 = 用户名1,用户名2,...(多个用户用逗号分隔,无空格)。
  • 示例说明:
    • admin_group = admin:创建一个名为admin_group的组,包含用户admin(这个用户需在passwd文件中已定义)。
    • test_group = test:创建一个名为test_group的组,包含用户test(同样需在passwd中存在)。

[权限规则部分]:控制访问范围和权限

[/]
@admin_group = rw
@test_group = r
* =
  • [/]:表示权限作用的范围。/ 代表仓库的根目录。这个地方不要误解, 这个表示对于每个仓库自身的根目录
    • 如果想针对某个特定仓库配置权限(而非所有仓库),可以写成 [仓库名:/],例如 [myproject:/] 表示只对myproject仓库生效。
  • 权限规则说明:
    • @admin_group = rw@ 符号表示 “用户组”,这条规则表示 admin_group 组的所有用户对 / 范围有 rw 权限。
      • rw 是权限组合:r(read,读权限,可检出、更新代码)和 w(write写权限,可提交、修改代码)。
    • @test_group = rtest_group 组的用户只有 r 权限(只能看代码,不能修改提交)。
    • * =* 表示 “所有未匹配的用户 / 组”,= 表示 “无任何权限”。这条规则是安全兜底,确保除了上面明确授权的用户组,其他用户无法访问。

更精细的权限控制

如果需要对仓库的子目录设置不同权限(例如只允许某个组修改特定目录),可以添加更具体的规则,例如:

# 对 myproject 仓库的 /trunk 目录设置权限
[myproject:/trunk]
@admin_group = rw    # 管理员可读写
@dev_group = r       # 开发组只读

# 对 myproject 仓库的 /branches/dev 目录设置权限
[myproject:/branches/dev]
@dev_group = rw      # 开发组可读写该分支
@admin_group = rw    # 管理员仍有读写权限
* =                  # 其他用户无权限

配置 svnserve.conf

编辑 svnserve.conf ,内容参考如下:

# force-username-case = none
# 匿名访问的权限 可以是read、write,none,默认为read
anon-access = none
#使授权用户有写权限,前提是 authz 文件中也允许
auth-access = write
#指定用户密码文件的路径
password-db = passwd
#访问控制文件
authz-db = authz
#认证命名空间,SVN会在认证提示里显示,并且作为凭证缓存的关键字,应该具有唯一性
realm = /var/svn/tes

测试

上述配置修改完后,重启 docker 容器,接下来,我们使用 admin 用户来测试修改提交代码

完成后,我们使用 admin 用户随便创建一个文件并提交,然后使用 test 用户拉去尝试修改,试试能否成功,不能成功才是对的,因为 test 用户只有读的权限。这里大家自己尝试一下就可以了,我就不截图一个一个的演示了。

到此这篇关于Docker搭建SVN服务器的实现步骤的文章就介绍到这了,更多相关Docker搭建SVN内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker部署springboot项目到腾讯云的实现步骤

    Docker部署springboot项目到腾讯云的实现步骤

    本文主要介绍了Docker部署springboot项目到腾讯云的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Docker和Docker-compose离线包部署全过程

    Docker和Docker-compose离线包部署全过程

    本文介绍了在局域网内无法访问外网的工作服务器上部署Docker和Docker Compose的步骤,包括选择合适的Docker静态包版本、下载Docker官方静态包、配置Docker服务和daemon.json文件、下载Docker和Docker Compose文件、打包文件以及编写离线安装脚本
    2025-10-10
  • Docker PostgreSQL容器化部署方式

    Docker PostgreSQL容器化部署方式

    这篇文章主要介绍了如何部署和配置PostgreSQL数据库,包括使用Bitnami的PostgreSQL镜像、通过Docker和Docker Compose进行部署、配置网络和连接、设置同步复制、启用SSL/TLS加密以及使用LDAP认证等详细步骤
    2025-01-01
  • 在Docker中运行Java JAR包的实战教程

    在Docker中运行Java JAR包的实战教程

    这篇文章详细介绍了使用Docker运行Java应用的全过程,从环境准备到构建与运行,再到进阶配置和最佳实践,需要的朋友可以参考下
    2025-12-12
  • Docker部署Django应用的示例

    Docker部署Django应用的示例

    这篇文章主要介绍了Docker部署Django应用的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 利用Docker部署PostgreSQL 12.4主从方式

    利用Docker部署PostgreSQL 12.4主从方式

    这篇文章主要介绍了利用Docker部署PostgreSQL 12.4主从方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Docker如何同时启动多个服务

    Docker如何同时启动多个服务

    这篇文章主要为大家详细介绍了Docker如何同时启动多个服务,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 如何修改Docker的默认网段

    如何修改Docker的默认网段

    文章指导如何修改Docker网段:通过编辑daemon.json配置文件设置新网段和镜像源,重启Docker服务,最后验证docker0接口及容器IP是否更新,确保网络配置生效
    2025-08-08
  • Kubernetes(k8s)基础介绍

    Kubernetes(k8s)基础介绍

    今天小编就为大家分享一篇关于Kubernetes(k8s)基础介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • docker如何为容器指定虚拟网卡或IP

    docker如何为容器指定虚拟网卡或IP

    在Docker中,可以通过自定义网络和--network标志将容器绑定到特定的虚拟网卡或网络接口,此外,还可以使用host和macvlan等其他网络驱动,在使用这些模式时,需要注意一些注意事项
    2025-01-01

最新评论