Docker搭建SvnServer
下载svn-server官方镜像
docker pull garethflowers/svn-server
运行svn-server容器
docker run -v /home/svn:/var/opt/svn --name svn-server -p 3690:3690 --privileged=true -e SVN_REPONAME=repository -d docker.io/garethflowers/svn-server
-
-v /home/svn:/var/opt/svn:将容器的/var/opt/svn文件夹下的内容映射到宿主机的/home/svn文件夹下面
-
--name svn-server:容器取名为svn-server
-
-p 3690:3690:将容器的3690端口映射到宿主机器的3690
-
--privileged=true:将容器以特权方式启动
-
-e SVN_REPONAME=repository:环境变量,这里指定svn仓库名称为repository
创建一个svn仓库
- 进入容器内部
docker exec -it svn-server /bin/sh
- 创建一个名为test-repo的仓库
svnadmin create /var/opt/svn/test-repo
- 退出容器,回到宿主机
exit
- 修改仓库的配置信息
进入/home/svn这个目录,可以看到有一个名为test-repo的文件夹
cd /home/svn
进入test-repo/conf文件夹内部,可看到如下文件夹:
svnserve.conf:用来配置仓库
passwd:管理用户
authz:配置用户组;配置仓库访问权限
cd test-repo/
cd conf/
用vi打开svnserve.conf,修改仓库配置
vi svnserve.conf
去掉以下三处的注释,注意行头不要留空格:
修改完毕之后保存并退出vi:
:wq
用vi打开passwd,添加一个名为test的用户,注意行头不要留空格,等号(=)前后建议加空格,修改完之后保存并退出vi:
vi passwd
用vi打开authz,添加一个名为test-group的用户组,并为该用户组设置仓库的读写权限,修改完毕保存并退出vi:
vi authz
[groups]
#harry_and_sally = harry,sally
#harry_sally_and_joe = harry,sally,&joe
#新建一个名为test-group的用户组,并把名为test的用户加入到用户组。若多个用户需要加入用户组,用英文逗号分隔
test-group = test
#设置test-group用户组对仓库test-repo的读写权限
[test-repo:/]
@test-group = rw
使用SVNClient工具检出test-repo
本文使用SnailSvn作为SVNClient工具
新建temp文件夹,然后点击svn检出
版本库地址:svn://宿主机ip/test-repo
点击左下角的「小锁」,配置用户名和密码
用户名:test
密码:test
成功连接到了仓库,并在temp文件夹下面创建了一个隐藏的.svn文件夹:
docker异常退出了怎么办
docker异常退出、宿主机断电了或宿主机操作系统损坏了怎么办?
因为svn-server中的文件已经映射到了宿主机器,所以只要文件还在,修复好docker运行环境之后,重新执行docker run命令即可正常访问。
引用
- garethflowers/svn-server官方docker镜像:https://hub.docker.com/r/garethflowers/svn-server