「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战」。
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
使用docker可以快速的在服务器中搭建一个svn服务.
1. 下载镜像
docker pull garethflowers/svn-server
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端口
3. 创建 svn 库
进入容器
docker exec -it svn /bin/sh
创建svn库
svnadmin create testropo
进入 conf 目录 有以下几个文件authz, passwd, svnserve.conf
配置passwd文件
vi passwd 进入文件
在[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
两种方式可以一起使用的,可以自己搭配,我是用的第一种
编辑 svnserve.conf,找到 [general] 节点,加入以下内容
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /var/opt/repo/svn
退出容器,重启容器
exit 推出容器
docker restart svn 重启容器
3. 客户端连接测试
使用地址 svn://ip/仓库名
验证输入用户名密码
检出成功
上传一个文件
用另一个文件夹检出成功,测试完成