使用 docker 安装 svn

3,984 阅读2分钟

「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战」。

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

使用docker可以快速的在服务器中搭建一个svn服务.

1. 下载镜像

docker pull garethflowers/svn-server

111.jpg

2. 启动 svn 容器

创建容器挂载目录

mkdir -p /opt/docker/svn

执行启动命令

docker run --privileged=true --restart always --name svn -d -v /opt/docker/svn:/var/opt/svn -p 3690:3690 garethflowers/svn-server

-v /opt/docker/svn:/var/opt/svn    挂载宿主目录到容器目录
--restart always                   设置容器开机自启
--privileged=true                  授予容器管理员权限,预防创建svn创库时提示权限不足
--name svn                         设置容器name为svn
-d                                 指定容器后台运行

执行 docker ps 可以看到 svn 正在运行 注意有防火墙要开放3690端口

111.jpg

3. 创建 svn 库

进入容器

docker exec -it svn /bin/sh

创建svn库

svnadmin create testropo

111.jpg

进入 conf 目录 有以下几个文件authz, passwd, svnserve.conf

配置passwd文件

vi passwd 进入文件

111.jpg

在[users]下增加了账户 test 密码为123456,注意#后面内容是注释掉的,不用管。且注意等号两边有要有空格

[users]
# harry = harryssecret
# sally = sallyssecret

test = 123456

配置authz

这里有两种配置方式

第一种 以用户组的方式配置,一个组下可以有多个用户,例如

[groups]
admin = test,aaa,bbb

[/]
@amdin = rw

[ropository:/]

[groups] 的意思就是admin这个组下存在test,aaa,bbb三个账户

[/]表示根目录,@admin表示给组设置根所有仓库的rw(读写)权限,给组设置权限必须用@符号,[/]代表所有仓库

[ropository:/] 代表用户在 testropo 仓库的所有目录有相应权限,这里根据自己需求设计

第二种 直接给用户设置权限

[/]
test = rw

两种方式可以一起使用的,可以自己搭配,我是用的第一种

111.jpg

编辑 svnserve.conf,找到 [general] 节点,加入以下内容

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /var/opt/repo/svn

111.jpg

退出容器,重启容器

exit 推出容器

docker restart svn 重启容器

111.jpg

3. 客户端连接测试

使用地址 svn://ip/仓库名

111.jpg

验证输入用户名密码

122.jpg

检出成功

133.jpg

上传一个文件

111.jpg

用另一个文件夹检出成功,测试完成

111.jpg