Subversion(简称SVN),是一个开放源代码的版本控制系统。可以存储代码文档等
搜索镜像
使用排名第2的elleflorio/svn-server镜像
这里面包含了 apache2(http server)、svn server 、svnadmin(PHP版本)代码仓库管理端,相比排名第一的garethflowers/svn-server,比较完整,可以使用http协议访问,否则只能使用svn协议访问。
[root@AlexWong svn]# docker search svnNAME DESCRIPTION STARS OFFICIAL AUTOMATEDgarethflowers/svn-server A simple Subversion server/ using `svnserve`/ 64 [OK]elleflorio/svn-server Lightweight Docker container running an SVN … 38krisdavison/svn-server A pre-configured SVN source control server/ 26//////新建容器
/docker/svn/start/sh
# 新建目录[root@AlexWong svn]# mkdir repo config svnadmin_data[root@AlexWong svn]# pwd/docker/volumes/svn# 修改权限[root@AlexWong svn]# sudo chmod -R a+w *-----------------------------------------------------------# 进入/docker/svn 目录[root@AlexWong svn]# vim start/shdocker stop svn-testdocker rm svn-testdocker run --restart always --name svn-test -d -p 3690/3690 -p 18080/80 -v /docker/volumes/svn//tmp/svn elleflorio/svn-server [root@AlexWong svn]# sh start/sh进入容器
-----------------------------------1--------------------------------# 先挂载临时目录[root@AlexWong svn]# cat enter/shdocker exec -it svn-test /bin/sh[root@AlexWong svn]# sh enter/sh# 查看仓库配置文件/ # cat /etc/apache2/conf/d/dav_svn/confLoadModule dav_svn_module /usr/lib/apache2/mod_dav_svn/soLoadModule authz_svn_module /usr/lib/apache2/mod_authz_svn/so</Location /svn>/ DAV svn SVNParentPath /home/svn SVNListParentPath On AuthType Basic AuthName Subversion Repository AuthUserFile /etc/subversion/passwd AuthzSVNAccessFile /etc/subversion/subversion-access-control Require valid-user--------------------------------------------------------------------# 拷贝相关文件到tmp,同步到挂载点/ # cp /etc/subversion/* /tmp/svn/config/ # cp /opt/svnadmin/data/* /tmp/svn/svnadmin_data# 然后退出/此时相关配置文件已经同步到宿主机,退出更改start/sh[root@AlexWong svn]# vim start/sh# 3690是svn server的默认端口,80是apache的默认端口docker stop svn-testdocker rm svn-testdocker run --restart always --name svn-test -d -p 3690/3690 -p 18080/80 -v /docker/volumes/svn/repo//home/svn -v /docker/volumes/svn/config//etc/subversion -v /docker/volumes/svn/svnadmin_data//opt/svnadmin/data elleflorio/svn-server# 更改挂载点后,重启容器[root@AlexWong svn]# sh start/sh-----------------------------------2--------------------------------# 进入容器,创建仓库[root@AlexWong svn]# sh enter/sh/ # mkdir -p /home/svn/myrep/ # ls /home/svn/myrep/ # svnadmin create --pre-1/6-compatible /home/svn/myrep-----------------------------------3--------------------------------# 添加用户访问权限/ # vi /etc/subversion/subversion-access-control[groups][/]* = radmin = rw# 添加admin的读写权限-----------------------------------4--------------------------------# 添加用户账号/ # htpasswd -b /etc/subversion/passwd admin admin123Adding password for user admin# 退出/ # exit-----------------------------------5文件赋予权限--------------------------------[root@AlexWong config]# sudo chmod -R a+w /docker/volumes/svn/config/*[root@AlexWong config]# sudo chmod -R a+w /docker/volumes/svn/repo/*[root@AlexWong config]# sudo chmod -R a+w /docker/volumes/svn/svnadmin_data/*#不赋予权限,后面会有问题-----------------------------------------------------------------------------# 访问Apache HTTP Serverhttp///124/71/81/53/18080/# 服务器需开放18080端口云服务器安全组需开放18080端口
表示SVN服务正常启动。
在浏览器地址后面加上svn/ 即http////svn,会弹出提示框输入用户名和密码,登录成功后出现如下界面
配置svnadmin(一个php写的svn管理工具)
访问 http///124/71/81/53/18080/svnadmin/
Error/ Could not copy configuration file template/ Require write permission (777) to data folder and all containing files/#0 /opt/svnadmin/index/php(20)/ include_once()#1 {main}配置文件权限
[root@AlexWong svn]# chmod 777 /docker/volumes/svn/svnadmin_data/然后刷新一下:
按照 上面步骤里提到的/etc/apache2/conf/d/dav_svn/conf的内容去填写,并点击test按钮验证,如下图,然后点击Save Configuration
/ # cat /etc/apache2/conf/d/dav_svn/confLoadModule dav_svn_module /usr/lib/apache2/mod_dav_svn/soLoadModule authz_svn_module /usr/lib/apache2/mod_authz_svn/so</Location /svn>/ DAV svn SVNParentPath /home/svn SVNListParentPath On AuthType Basic AuthName Subversion Repository AuthUserFile /etc/subversion/passwd AuthzSVNAccessFile /etc/subversion/subversion-access-control Require valid-user然后保存配置,就可以使用admin登录了
分配权限
分配完之后,我们就可以在浏览器输入:http///124/71/81/53/18080/svn/project/访问
使用TortoiseSVN访问:
然后试下提交文件,提交时提示权限错误,检查是否遗漏了对repo目录下project的chmod的操作
[root@AlexWong repo]# lltotal 8drwxrwxrwx 6 root root 4096 Jan 4 19/34 myrepdrwxr-xr-x 6 100 101 4096 Jan 4 20/03 project# 赋予权限[root@AlexWong repo]# sudo chmod -R a+w *[root@AlexWong repo]# lltotal 8drwxrwxrwx 6 root root 4096 Jan 4 19/34 myrepdrwxrwxrwx 6 100 101 4096 Jan 4 20/03 project***成功。
这是依赖于别人的镜像安装,可以从零开始创建自己的Docker镜像。后续有时间,就写一个从零开始Docker如何配置安装SVN。