1 找现有的镜像
dockerhub上搜索到一个,其在github上公布了镜像构建的dockerfile,并且支持http和svn两种协议,就这个吧。
https://github.com/elleFlorio/svn-docker
2 拉取镜像
docker pull garethflowers/svn-server:1.0
3 启动容器
这里修改一下服务端口
docker run --name svns \
-v /datacv/svnvol/svn:/home/svn \
-h svns \
-p 3380:80 \
-p 3360:3960 \
-m 200m \
-d elleflorio/svn-server:latest
4 进入容器
docker exec -it svns sh
5 建立仓库
mkdir -p /home/svn/rep
svnadmin create --pre-1.6-compatible /home/svn/rep
为了与原有客户端兼容(原来VisualSVN为1.7版本),需添加–pre-1.6-xx参数或者–pre-1.7-xx参数
chmod 777 /home/svn/rep/db
在容器中需要修改一下这个目录的权限,因为默认是root创建的仓库,在window端没有权限访问,否则会报错:
can’t open file db/txn-current-lock:permission
权限控制
镜像默认没有对权限进行控制,修改一下配置文件
vi /etc/apache2/conf.d/dav_svn.conf
<Location /svn>
DAV svn
SVNParentPath /home/svn
SVNListParentPath On
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /home/svn/passwd.conf
AuthzSVNAccessFile /home/svn/auth.conf
Require valid-user
</Location>
可以加到镜像的启动脚本里面,否则容器删除后需要重新配置。
根据此处的路径,配置访问权限
cat auth.conf
[rep:/]
peter=rw
jl=rw
v=r
用户密码见下面步骤
6 建立用户
htpasswd -b /home/svn/passwd.conf peter **
htpasswd -b /home/svn/passwd.conf jl **
htpasswd -b /home/svn/passwd.conf view **
7 网页访问
http://xxxx:3380/svn/rep/
会要求输入用户名和密码
如果访问失败,检查容器80端口没有起来。则手动创建目录
/etc # mkdir -p /run/apache2/
看Dockerfile源代码,是有这个目录创建的步骤的,但是在我centos7的docker中,该目录没有创建成功。很奇葩
8 客户端访问
下载一个与OS匹配的64位客户端。