本文共 4418 字,大约阅读时间需要 14 分钟。
这篇文章介绍一下SVN的容器化方式的一个镜像:elleflorio/svn-server的使用方法。
目录
SVN镜像
Docker Hub地址
https://hub.docker.com/r/elleflorio/svn-server
镜像拉取命令
docker pull elleflorio/svn-server
启动服务
启动命令
执行命令:docker run -d --name svn-server -v $(PWD)/data:/home/svn -v $(PWD)/conf:/etc/subversion -p 80:80 -p 3690:3690 elleflorio/svn-server
挂载卷说明
- /home/svn: 容器内的此目录为仓库数据保存目录,需要挂载出来进行持久化保存
- /etc/subversion:容器内的此目录为配置文件保存目录,也需要挂载出来进行持久化保存
结果确认
Apache的http服务确认
通过暴露的80端口进行访问确认,提示如下It works!说明Apache服务已正常
svnadmin图形化配置
这个镜像提供了svnadmin的图形化页面配置方式
注意:需要注意要每次操作之后最好按一下最下面的保存按钮进行保存。页面跳转设定
如果希望将/的跳转和svnadmin的图形化页面设定取消,可以按照如下步骤进行操作即可
修改页面跳转
- 修改对象文件:页面显示的It works!的文件在容器内的如下位置:
liumiaocn:svn liumiao$ docker exec -it svn-server sh/ # cd /var/www/localhost/htdocs/var/www/localhost/htdocs # lsindex.html svnadmin/var/www/localhost/htdocs # cat index.htmlIt works!
/var/www/localhost/htdocs #
- 修改内容:修改如下即可
/var/www/localhost/htdocs # vi index.html /var/www/localhost/htdocs # cat index.html /var/www/localhost/htdocs #
封住svnadmin页面
在同样的目录下可以看到svnadmin的软链接
/var/www/localhost/htdocs # pwd/var/www/localhost/htdocs/var/www/localhost/htdocs # ls -ltotal 4-rw-r--r-- 1 root root 64 Nov 14 22:25 index.htmllrwxrwxrwx 1 root root 13 May 9 2020 svnadmin -> /opt/svnadmin/var/www/localhost/htdocs #
删除此链接即可
/var/www/localhost/htdocs # rm svnadmin//var/www/localhost/htdocs # ls -ltotal 4-rw-r--r-- 1 root root 64 Nov 14 22:25 index.html/var/www/localhost/htdocs #
配置设定
由于/etc/subversion在容器启动的时候就进行了挂载,会将之前缺省的两个文件给覆盖掉,所以需要手动创建如下两个文件
touch subversion-access-control passwd
/var/www/localhost/htdocs # cd/home # cd /etc/subversion//etc/subversion # ls/etc/subversion # touch subversion-access-control passwd/etc/subversion # ls -ltotal 0-rw-r--r-- 1 root root 0 Nov 14 22:32 passwd-rw-r--r-- 1 root root 0 Nov 14 22:32 subversion-access-control/etc/subversion #
常见功能确认
操作1:添加用户
执行命令:htpasswd -b /etc/subversion/passwd 用户名 用户密码
/etc/subversion # htpasswd -b /etc/subversion/passwd admin liumiaocnAdding password for user admin/etc/subversion # cat passwd admin:$apr1$.8iuymrB$lD/krn4MMylNdNB9Q4y250/etc/subversion #
结果确认
执行之后结果如下所示,因为此时尚未创建仓库,所以信息为空操作2: 创建仓库
执行命令:svnadmin create 仓库名称
/etc/subversion # cd /home/svn/home/svn # ls/home/svn # svnadmin create repo1/home/svn # lsrepo1/home/svn # svnadmin create repo2/home/svn # svnadmin create repo3/home/svn # lsrepo1 repo2 repo3/home/svn #
操作3: 权限设定
缺省authz的文件在这个镜像中名字有所不同,内容设定并无区别,进行如下设定即可
/home/svn # cd /etc/subversion//etc/subversion # lspasswd subversion-access-control/etc/subversion # vi subversion-access-control /etc/subversion # pwd/etc/subversion/etc/subversion # cat subversion-access-control [repo1:/]admin = rw[repo2:/]admin = r[repo3:/]admin = w/etc/subversion #
操作4: co操作
liumiaocn:svn liumiao$ mkdir clientliumiaocn:svn liumiao$ cd c-bash: cd: c: No such file or directoryliumiaocn:svn liumiao$ cd client/liumiaocn:client liumiao$ svn co http://localhost/svn/repo1 --username=admin --password=liumiaocnChecked out revision 0.liumiaocn:client liumiao$ svn co http://localhost/svn/repo2 --username=admin --password=liumiaocnChecked out revision 0.liumiaocn:client liumiao$ svn co http://localhost/svn/repo3 --username=admin --password=liumiaocnsvn: E170013: Unable to connect to a repository at URL 'http://localhost/svn/repo3'svn: E175013: Access to '/svn/repo3' forbiddenliumiaocn:client liumiao$
可以看到由于在操作3中并未把r权限给予admin,所以无法对repo进行co操作
操作5: ci操作
liumiaocn:client liumiao$ cd repo1liumiaocn:repo1 liumiao$ lsliumiaocn:repo1 liumiao$ touch testforrepo1liumiaocn:repo1 liumiao$ echo "hello reop1" >testforrepo1 liumiaocn:repo1 liumiao$ svn add testforrepo1 A testforrepo1liumiaocn:repo1 liumiao$ svn commit -m "test for new file"Adding testforrepo1Transmitting file data .doneCommitting transaction...Committed revision 1.liumiaocn:repo1 liumiao$
然后从页面也可以进行了确认
对于没有写权限的repo2,admin只能进行co操作而无法进行ci操作,具体如下所示liumiaocn:repo1 liumiao$ cd ../repo2liumiaocn:repo2 liumiao$ lsliumiaocn:repo2 liumiao$ touch testforrepo2liumiaocn:repo2 liumiao$ echo "hello repo2" >testforrepo2 liumiaocn:repo2 liumiao$ svn add testforrepo2 A testforrepo2liumiaocn:repo2 liumiao$ svn commit -m "test for new file"svn: E175013: Commit failed (details follow):svn: E175013: Access to '/svn/repo2/!svn/me' forbiddenliumiaocn:repo2 liumiao$
其他常见问题与对应
总结
elleflorio/svn-server提供的功能基本够使用,只是版本也稍旧。
转载地址:https://liumiaocn.blog.csdn.net/article/details/109699741 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!