5-使用docker-svn镜像

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位客户端。

    原文作者:比特阳
    原文地址: https://www.jianshu.com/p/0146b5ba69a6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞