使用Docker部署一个SVN服务器的操作步骤记录

1,Docker安装略,参考前面香橙派的安装,基本上一句话搞定

curl -sSL https://get.docker.com | sh
service docker start   //启动服务
systemctl enable docker  //开机自启动

2,使用 elleflorio/svn-server 安装 svnServer 带WebUI

这里可以使用外部路径映射,方便资源库导入导出,修改配置等等,我这里使用 宿主机目录 /root/svn

docker run --privileged=true -d --name svn-server -p 8081:80 -p 3690:3690 \
  -v /root/svn/repo:/home/svn \
  -v /root/svn/subversion-access-control:/etc/subversion/subversion-access-control  \
  -v /root/svn/passwd:/etc/subversion/passwd  \
  elleflorio/svn-server //安装并启动SVNServer
//设定 超级管理员用户名与密码
docker exec -t svn-server htpasswd -b /etc/subversion/passwd <username> <password>

安装完成之后,就能SVN控制台配置画面(URL:http://ip:port/svnadmin/settings.php) ,确保各项目测试Pass,保存配置;(提示目录写权限不足的话,赋予相关权限)

Subversion authorization file: /etc/subversion/subversion-access-control
User authentication file (SVNUserFile):/etc/subversion/passwd
Parent directory of the repositories (SVNParentPath):/home/svn
Subversion client executable:/usr/bin/svn
Subversion admin executable:/usr/bin/svnadmin

3,保存之后,第一次登录就应该能进入控制台了;

这个时候,访问 http://IP:PORT/svn/ 应该能看到空的RepoCollections,进入控制台可以新建用户,组,代码仓库等等;

这时 使用 HTTP协议(http://IP:PORT/svn/<RepoName>)方式使用基本上就OK了。包括之前建立的的用户组,访问策略,关系等等,都会生效;客户端使用图形软件取代码,应该没有问题。

但是,如果要使用svn协议(svn://IP:PORT/<RepoName> )就麻烦了,这个权限信息是在每个仓库里面(Repositories)配置的。需要修改 资源仓库(RepoName)配置( conf) 目录 下面的用户配置文件( passwd)和 服务配置(svnserve.conf) 这两个文件

a.svnserve.conf修改 打开两行注释

### some configuration lines...###
auth-access=write
### ... ###
password-db=passwd
### the rest of the file... ###

b.passwd配置文件中加入svn的用户名密码

[users]
# harry = harryssecret
# sally = sallyssecret
user=pass #用户名密码

上述过程完成之后,重启Docker容器,然后使用 user/pass 账号应该就能使用 svn方式使用这个svn了,这时候我们通过WEB界面配出来的组,权限策略等等都没有效果,需要这里再配置。考虑到这么麻烦,如果不需要svn协议模式,直接Docker run 的时候就不开放3690端口了。

最后修改日期: 2022年7月31日

作者