1 找現(xiàn)有的鏡像
dockerhub上搜索到一個(gè),其在github上公布了鏡像構(gòu)建的dockerfile,并且支持http和svn兩種協(xié)議,就這個(gè)吧。
https://github.com/elleFlorio/svn-docker
2 拉取鏡像
docker pull garethflowers/svn-server:1.0
docker pull elleflorio/svn-server:latest (推薦)
3 啟動(dòng)容器
這里修改一下服務(wù)端口
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 進(jìn)入容器
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參數(shù)或者--pre-1.7-xx參數(shù)
chmod 777 /home/svn/rep/db
在容器中需要修改一下這個(gè)目錄的權(quán)限,因?yàn)槟J(rèn)是root創(chuàng)建的倉庫,在window端沒有權(quán)限訪問,否則會(huì)報(bào)錯(cuò):
can't open file db/txn-current-lock:permission
權(quán)限控制
鏡像默認(rèn)沒有對權(quán)限進(jìn)行控制,修改一下配置文件
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>
可以加到鏡像的啟動(dòng)腳本里面,否則容器刪除后需要重新配置。
根據(jù)此處的路徑,配置訪問權(quán)限
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 網(wǎng)頁訪問
http://xxxx:3380/svn/rep/
會(huì)要求輸入用戶名和密碼
如果訪問失敗,檢查容器80端口沒有起來。則手動(dòng)創(chuàng)建目錄
/etc # mkdir -p /run/apache2/
看Dockerfile源代碼,是有這個(gè)目錄創(chuàng)建的步驟的,但是在我centos7的docker中,該目錄沒有創(chuàng)建成功。很奇葩
8 客戶端訪問
下載一個(gè)與OS匹配的64位客戶端。