本来想在自己的服务器上面架设SVN服务,但是不利于移植。想在虚拟机中架设,但是虚拟机又不常开,所以决定通过Docker来架设。在网上找过一些资料,研究实现,但是从镜像库中拉取下来的镜像最终都没有成功。最后决定自己拉取一个centos的镜像,然后在这个镜像中架设一个全新的SVN服务。
首先,拉取centos镜像。
docker pull daocloud.io/library/centos:7
运行这个镜像。
docker run --name svn --hostname svnserver -it -p 3691:3690 -d daocloud.io/library/centos:7
这里需要注意:
1. svn的默认端口是3690,我们在这里把他映射为宿主服务器的3691;
2. -it这个参数是必须要加的,以前运行了很多镜像,都可以不加这个参数,所以失败了很多次,一直都怀疑是镜像问题。
3. --hostname是强迫症。
接下来我们要进入容器。
docker exec -it svn bash
进去之后,更新系统。
yum update
更新系统是我的习惯,我总是喜欢最新的系统状态。强迫症。
安装svn。
yum install subversion
下来该创建文件夹了。我把文件夹放在home下面。
cd /home
mkdir svn
然后创建一个库。
svnadmin create /home/svn/repo/
这里的repo就是我的版本库了。在这个库里面可以看到很多东西,不截图了。
cd /home/svn/repo
ll
进入conf文件夹,可以少打几个字母。
cd conf
接下来的三步很重要:
1. 修改配置文件
vi /home/svn/repo/conf/svnserve.conf
打全路径是便于识别,后面就不用了,都在这个文件夹下。
这里主要把几个注释掉的参数释放出来。
anon-access = none #控制非鉴权用户访问版本库的权限
auth-access = write #控制鉴权用户访问版本库的权限
password-db = passwd #指定用户名口令文件名
authz-db = authz #指定权限配置文件名
realm = somnus #这个应该没有什么具体作用,我释放之后并没有修改
以上部分复制自https://blog.youkuaiyun.com/u012486840/article/details/52524389
修改完保存退出。
2. 添加设置用户和密码
vi passwd
主要在[users]下面设置用户名和密码。
[users]
# harry = harryssecret
# sally = sallyssecret
chris = 123456
kaly = 123456
alice = 123456
前面是用户名,后面是密码。
保存退出。
3. 最后修改权限设置。
先分组,在[groups]下面做分组设置。
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin = kaly
user = alice
java = chris,kaly
再在后面对分组设置权限r为可读,w为可写。
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[repo:/]
@admin = rw
@user = r
@java = rw
* =
repo是我创建的库,我只在这里对根目录进行权限分配。如果还在在这里建立子库,则添加节点分配权限。
后面的* = 是将除上面配置以外的用户权限设置为全面禁止。没有做测试。
设置完成了,运行svn。
svnserve -d -r /home/svn/
在宿主系统(我这里还是centos7)中测试一下。
svn co svn://192.168.1.112:3691/repo
提示取出版本0就没问题,因为里面还没有东西。如果提示输入密码用户名之类,便要检查权限设置的问题,还有路径节点的问题。我就是在这两个地方游荡了很久。
提示要设置防火墙放过映射的端口,我的做法简单粗暴,直接关闭防火墙,因为是我自己的服务器,学习研究使用的。公司服务器不行,要谨慎。
在Windows系统中,打开安装好的svn客户端,拉取版本库。
URL输入:svn://192.168.1.112:3691/repo,就可以拉取到我创建的版本库了。
步骤不是很多,服务器配置过几次了,每次配置的时候都忘记了,现在简单记录一下。
然后需要做的就是把这个容器做成自己的Docker镜像,保存在镜像库里面,以后免得费事了。