相比安装gitlab来讲svn算是轻量级的了。本文主要介绍在docker下搭建svn服务器。
参考 https://github.com/elleFlorio/svn-docker
1. 获取镜像
Pulling from garethflowers/svn-server
Unable to find image 'elleflorio/svn-server:latest' locally docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:44533->[::1]:53: read: connection refused. 怀疑是被墙了,查找svn镜像,同样报错。 Error response from daemon: Get https://index.docker.io/v1/search?q=svn&n=25: dial tcp: lookup index.docker.io on [::1]:53: read udp [::1]:33688->[::1]:53: read: connection refused 在宿主机中访问地址 ,能访问内容,说明没有被墙。 检查虚拟机配置, ping www.baidu.com ping: www.baidu.com: 未知的名称或服务 所以应该是虚拟机的网络配置问题。 firewall-cmd --state 显示为 running ,关闭。(正式环境中 不建议使用此操作。 ) systemctl stop firewalld.service systemctl disable firewalld.service 检查dns配置,发现dns配置不对,改成自动配置ip。 再次执行 运行容器命令。 报错: driver failed programming external connectivity on endpoint svn-server (dbad84ca5e7365e7046c7160b87eb1da296e170d282edda9399ce74d23846d02): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3960 -j DNAT --to-destination 172.17.0.3:3960 ! -i docker0: iptables: No chain/target/match by that name 关闭防火墙可能会清空docker规则 所以需要重建docker 网络。重启docker 即可。 systemctl restart docker
2. 设置用户名和密码
运行 命令
docker run -v /opt/data/svn/repo:/var/opt/svn --name svn-server -p 3690:3690 -e SVN_REPONAME=repository -d garethflowers/svn-server
返回容器id bc81ba6cd8b8ec38e075949358277e6cc3632579be77d748f8fec118a65ab4dc
3. 进入容器执行命令
3.1 进入容器
docker exec -it bc81ba6cd8b8ec38e075949358277e6cc3632579be77d748f8fec118a65ab4dc /bin/sh
3.2 资源库配置
3.2.1在/var/opt/svn目录下创建资源库。
svnadmin create /var/opt/svn/repository
( /var/opt/svn # svnadmin create /var/opt/svn/repository)
3.2.2 配置资源库
进入repository的 config目录 (/var/opt/svn/repository/conf)执行
vi svnserve.conf
(/var/opt/svn/repository/conf # vi svnserve.conf)
将下面的三段 前面的 # 去掉。

2.2.3 编辑密码文件 (config目录下)
vi passwd

在末尾 添加一行 用户名 = 密码 (例如 yz = 123456)
2.2.4 修改鉴权文件
vi authz
在末尾添加

其中,yz是之前添加的用户名
3. 退出容器
exit
复制容器内容到宿主机(这里是虚拟机)
docker cp 容器ID:/var/opt/svn/repository/ /opt/data/svn/repo
docker cp bc81ba6cd8b8ec38e075949358277e6cc3632579be77d748f8fec118a65ab4dc:/var/opt/svn/repository/ /opt/data/svn/repo
其中bc81ba6cd8b8ec38e075949358277e6cc3632579be77d748f8fec118a65ab4dc是容器id
4. 使用 ?

浙公网安备 33010602011771号