【docker】部署svn服务器,docker安装部署svn服务器

话不多说直接上步骤!

1.下载镜像,创建容器

docker pull elleflorio<span class="token operator">/</span>svn<span class="token operator">-</span>server mkdir <span class="token operator">-</span>p <span class="token operator">/</span>var<span class="token operator">/</span>svn docker run <span class="token operator">-</span>d
 docker pull elleflorio<span class="token operator">/</span>svn<span class="token operator">-</span>server  mkdir <span class="token operator">-</span>p <span class="token operator">/</span>var<span class="token operator">/</span>svn  docker run <span class="token operator">-</span>d  
docker pull elleflorio/svn-server mkdir -p /var/svn docker run -d

2.在服务器创建代码仓库

docker <span class="token keyword">exec</span> <span class="token operator">-</span>t svn<span class="token operator">-</span>server svnadmin <span class="token keyword">create</span> <span class="token operator">/</span>home<span class="token operator">/</span>svn<span class="token operator">/</span>test
 docker <span class="token keyword">exec</span> <span class="token operator">-</span>t svn<span class="token operator">-</span>server svnadmin <span class="token keyword">create</span> <span class="token operator">/</span>home<span class="token operator">/</span>svn<span class="token operator">/</span>test 
docker exec -t svn-server svnadmin create /home/svn/test

以上代码中,在容器中的/home/svn/test目录创建代码仓库,会同步到本机的/var/svn目录。我们先进行svn仓库配置。

SVN库中的配置目录 conf 有三个文件:

authz 是权限控制文件 passwd 是帐号密码文件 svnserve<span class="token punctuation">.</span>conf 是SVN服务综合配置文件
 authz 是权限控制文件 passwd 是帐号密码文件 svnserve<span class="token punctuation">.</span>conf 是SVN服务综合配置文件 
authz 是权限控制文件 passwd 是帐号密码文件 svnserve.conf 是SVN服务综合配置文件

配置权限配置文件 authz

编辑 authz ,内容参考如下:

<span class="token punctuation">[</span>groups<span class="token punctuation">]</span> admin <span class="token operator">=</span> master<span class="token punctuation">,</span>master <span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span> <span class="token variable">@admin</span> <span class="token operator">=</span> rw <span class="token operator">*</span><span class="token operator">=</span>r 第一种方式:单个添加: <span class="token punctuation">[</span>test<span class="token operator">/</span><span class="token punctuation">]</span> admin <span class="token operator">=</span> rw test <span class="token operator">=</span> r 第二种方式(后面采用此方式配置):用户分组,再设权限 <span class="token punctuation">[</span>groups<span class="token punctuation">]</span> admin <span class="token operator">=</span> admin<span class="token punctuation">,</span>admin1 test <span class="token operator">=</span> test1<span class="token punctuation">,</span> test2 <span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span> <span class="token variable">@admin</span> <span class="token operator">=</span> rw <span class="token variable">@test</span> <span class="token operator">=</span> r <span class="token punctuation">[</span><span class="token operator">/</span>test1<span class="token punctuation">]</span> <span class="token variable">@test</span> <span class="token operator">=</span> rw <span class="token operator">*</span> <span class="token operator">=</span> 备注:版本库的目录格式如下: <span class="token punctuation">[</span><span class="token operator"><</span>版本库<span class="token operator">></span>:<span class="token operator">/</span>项目<span class="token operator">/</span>目录<span class="token punctuation">]</span> @<span class="token operator"><</span>用户组名<span class="token operator">></span> <span class="token operator">=</span> 权限 <span class="token operator"><</span>用户名<span class="token operator">></span> <span class="token operator">=</span> 权限 其中<span class="token punctuation">[</span><span class="token punctuation">]</span>內容有許多写法: <span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span><span class="token punctuation">,</span>表示根目录及其一下的路径,根目录是svnserver启动时指定好的,上述实例中我们指定为:<span class="token operator">/</span>svn<span class="token operator">/</span>svndata<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token operator">/</span>svn<span class="token operator">/</span>svndata<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span>就是表示对全部版本设置的权限 <span class="token punctuation">[</span>test:<span class="token operator">/</span><span class="token punctuation">]</span><span class="token punctuation">,</span>表示对版本库test设置权限; <span class="token punctuation">[</span>test:<span class="token operator">/</span>svnadmin<span class="token punctuation">]</span><span class="token punctuation">,</span>表示对版本库test中的svnadmin项目设置权限; <span class="token punctuation">[</span>test:<span class="token operator">/</span>svnadmin<span class="token operator">/</span><span class="token keyword">second</span><span class="token punctuation">]</span><span class="token punctuation">,</span>表示对版本库test中的svnadmin项目的目录设置权限; 权限的主体可以是用户组,用户或者<span class="token operator">*</span>,用户组在前面要以@开头,<span class="token operator">*</span>表示全部用户 权限分为:r <span class="token punctuation">,</span>w<span class="token punctuation">,</span> rw和<span class="token boolean">null</span> <span class="token punctuation">,</span><span class="token boolean">null</span>空表示没有任何权限。 auhtz配置文件中的每个参数,开头不能有空格,对于组要以@开头,用户不需要。
<span class="token punctuation">[</span>groups<span class="token punctuation">]</span>  admin <span class="token operator">=</span> master<span class="token punctuation">,</span>master  <span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span>  <span class="token variable">@admin</span> <span class="token operator">=</span> rw  <span class="token operator">*</span><span class="token operator">=</span>r 第一种方式:单个添加:  <span class="token punctuation">[</span>test<span class="token operator">/</span><span class="token punctuation">]</span> admin <span class="token operator">=</span> rw test <span class="token operator">=</span> r 第二种方式(后面采用此方式配置):用户分组,再设权限 <span class="token punctuation">[</span>groups<span class="token punctuation">]</span>  admin <span class="token operator">=</span> admin<span class="token punctuation">,</span>admin1  test <span class="token operator">=</span> test1<span class="token punctuation">,</span> test2  <span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span>  <span class="token variable">@admin</span> <span class="token operator">=</span> rw  <span class="token variable">@test</span> <span class="token operator">=</span> r  <span class="token punctuation">[</span><span class="token operator">/</span>test1<span class="token punctuation">]</span>  <span class="token variable">@test</span> <span class="token operator">=</span> rw  <span class="token operator">*</span> <span class="token operator">=</span> 备注:版本库的目录格式如下: <span class="token punctuation">[</span><span class="token operator"><</span>版本库<span class="token operator">></span>:<span class="token operator">/</span>项目<span class="token operator">/</span>目录<span class="token punctuation">]</span> @<span class="token operator"><</span>用户组名<span class="token operator">></span> <span class="token operator">=</span> 权限 <span class="token operator"><</span>用户名<span class="token operator">></span> <span class="token operator">=</span> 权限 其中<span class="token punctuation">[</span><span class="token punctuation">]</span>內容有許多写法: <span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span><span class="token punctuation">,</span>表示根目录及其一下的路径,根目录是svnserver启动时指定好的,上述实例中我们指定为:<span class="token operator">/</span>svn<span class="token operator">/</span>svndata<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token operator">/</span>svn<span class="token operator">/</span>svndata<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token punctuation">[</span><span class="token operator">/</span><span class="token punctuation">]</span>就是表示对全部版本设置的权限 <span class="token punctuation">[</span>test:<span class="token operator">/</span><span class="token punctuation">]</span><span class="token punctuation">,</span>表示对版本库test设置权限; <span class="token punctuation">[</span>test:<span class="token operator">/</span>svnadmin<span class="token punctuation">]</span><span class="token punctuation">,</span>表示对版本库test中的svnadmin项目设置权限; <span class="token punctuation">[</span>test:<span class="token operator">/</span>svnadmin<span class="token operator">/</span><span class="token keyword">second</span><span class="token punctuation">]</span><span class="token punctuation">,</span>表示对版本库test中的svnadmin项目的目录设置权限; 权限的主体可以是用户组,用户或者<span class="token operator">*</span>,用户组在前面要以@开头,<span class="token operator">*</span>表示全部用户 权限分为:r <span class="token punctuation">,</span>w<span class="token punctuation">,</span> rw和<span class="token boolean">null</span> <span class="token punctuation">,</span><span class="token boolean">null</span>空表示没有任何权限。 auhtz配置文件中的每个参数,开头不能有空格,对于组要以@开头,用户不需要。 
[groups] admin = master,master [/] @admin = rw *=r 第一种方式:单个添加: [test/] admin = rw test = r 第二种方式(后面采用此方式配置):用户分组,再设权限 [groups] admin = admin,admin1 test = test1, test2 [/] @admin = rw @test = r [/test1] @test = rw * = 备注:版本库的目录格式如下: [<版本库>:/项目/目录] @<用户组名> = 权限 <用户名> = 权限 其中[]內容有許多写法: [/],表示根目录及其一下的路径,根目录是svnserver启动时指定好的,上述实例中我们指定为:/svn/svndata([/]=/svn/svndata).[/]就是表示对全部版本设置的权限 [test:/],表示对版本库test设置权限; [test:/svnadmin],表示对版本库test中的svnadmin项目设置权限; [test:/svnadmin/second],表示对版本库test中的svnadmin项目的目录设置权限; 权限的主体可以是用户组,用户或者*,用户组在前面要以@开头,*表示全部用户 权限分为:r ,w, rw和null ,null空表示没有任何权限。 auhtz配置文件中的每个参数,开头不能有空格,对于组要以@开头,用户不需要。

配置账号密码文件 passwd

编辑 passwd ,内容参考如下:

<span class="token punctuation">[</span>users<span class="token punctuation">]</span> master <span class="token operator">=</span> master admin <span class="token operator">=</span> admin
<span class="token punctuation">[</span>users<span class="token punctuation">]</span>   master <span class="token operator">=</span> master admin <span class="token operator">=</span> admin 
[users] master = master admin = admin

配置 SVN 服务综合配置文件 svnserve.conf

编辑 svnserve.conf ,内容参考如下:

<span class="token punctuation">[</span>general<span class="token punctuation">]</span> anon<span class="token operator">-</span>access <span class="token operator">=</span> none auth<span class="token operator">-</span>access <span class="token operator">=</span> <span class="token keyword">write</span> password<span class="token operator">-</span>db <span class="token operator">=</span> passwd authz<span class="token operator">-</span>db <span class="token operator">=</span> authz realm <span class="token operator">=</span> <span class="token operator">/</span>var<span class="token operator">/</span>svn<span class="token operator">/</span>test <span class="token punctuation">[</span>sasl<span class="token punctuation">]</span>
<span class="token punctuation">[</span>general<span class="token punctuation">]</span>   anon<span class="token operator">-</span>access <span class="token operator">=</span> none  auth<span class="token operator">-</span>access <span class="token operator">=</span> <span class="token keyword">write</span>  password<span class="token operator">-</span>db <span class="token operator">=</span> passwd  authz<span class="token operator">-</span>db <span class="token operator">=</span> authz  realm <span class="token operator">=</span> <span class="token operator">/</span>var<span class="token operator">/</span>svn<span class="token operator">/</span>test <span class="token punctuation">[</span>sasl<span class="token punctuation">]</span> 
[general] anon-access = none auth-access = write password-db = passwd authz-db = authz realm = /var/svn/test [sasl]

3.同步代码到服务器项目目录

(1)在PC上将代码上传到svn仓库(PC上必须安装SVN)

svn checkout svn: cd test echo <span class="token string">"hello"</span> <span class="token operator">>></span> test<span class="token punctuation">.</span>txt svn <span class="token keyword">add</span> test<span class="token punctuation">.</span>txt svn <span class="token keyword">commit</span> test<span class="token punctuation">.</span>txt <span class="token operator">-</span>m <span class="token string">'test'</span>
 svn checkout svn:  cd test  echo <span class="token string">"hello"</span> <span class="token operator">>></span> test<span class="token punctuation">.</span>txt  svn <span class="token keyword">add</span> test<span class="token punctuation">.</span>txt svn <span class="token keyword">commit</span> test<span class="token punctuation">.</span>txt <span class="token operator">-</span>m <span class="token string">'test'</span> 
svn checkout svn: cd test echo "hello" >> test.txt svn add test.txt svn commit test.txt -m 'test'

(2)服务器同步代码

docker <span class="token keyword">exec</span> <span class="token operator">-</span>t svn<span class="token operator">-</span>server svn checkout svn:
 docker <span class="token keyword">exec</span> <span class="token operator">-</span>t svn<span class="token operator">-</span>server svn checkout svn: 
docker exec -t svn-server svn checkout svn:

(3)自动同步代码
实际上,如果我们用于开发的PC每一次向服务器提交一次代码,服务器都需要手动执行一下同步命令,本地代码才会同步到服务器的项目目录。想必很麻烦,于是我们可以使用SVN提供的钩子去实现代码自动更新。

cd <span class="token operator">/</span>var<span class="token operator">/</span>svn<span class="token operator">/</span>test<span class="token operator">/</span>hooks cp post<span class="token operator">-</span><span class="token keyword">commit</span><span class="token punctuation">.</span>tmpl post<span class="token operator">-</span><span class="token keyword">commit</span>
 cd <span class="token operator">/</span>var<span class="token operator">/</span>svn<span class="token operator">/</span>test<span class="token operator">/</span>hooks  cp post<span class="token operator">-</span><span class="token keyword">commit</span><span class="token punctuation">.</span>tmpl post<span class="token operator">-</span><span class="token keyword">commit</span> 
cd /var/svn/test/hooks cp post-commit.tmpl post-commit

我们将post-commit.tmpl钩子文件的后缀名去掉即可生效,于是我们复制一份。接下来我们编辑post-commit文件,注释掉发送邮件的代码。然后在下面加上两行代码即可,如下:

REPOS<span class="token operator">=</span><span class="token string">"$1"</span> REV<span class="token operator">=</span><span class="token string">"$2"</span> TXN_NAME<span class="token operator">=</span><span class="token string">"$3"</span> export LANG<span class="token operator">=</span><span class="token string">"en_US.UTF-8"</span> svn <span class="token keyword">update</span>
REPOS<span class="token operator">=</span><span class="token string">"$1"</span> REV<span class="token operator">=</span><span class="token string">"$2"</span> TXN_NAME<span class="token operator">=</span><span class="token string">"$3"</span>   export LANG<span class="token operator">=</span><span class="token string">"en_US.UTF-8"</span>  svn <span class="token keyword">update</span>  
REPOS="$1" REV="$2" TXN_NAME="$3" export LANG="en_US.UTF-8" svn update

编辑完成配置文件之后,我们只需要保存即可,自动生效。此时在PC上修改项目内容,再次提交到代码仓库,服务器会自动同步到服务器的项目目录。不再需要手动执行svn checkout指令

使用svn小乌龟连接时,注意url:svn://ip/项目名

在这里插入图片描述

原文链接:https://blog.csdn.net/weixin_43431218/article/details/131729918?ops_request_misc=%257B%2522request%255Fid%2522%253A%25229ffa1337a04e82e903fa7eee6a39d9b7%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=9ffa1337a04e82e903fa7eee6a39d9b7&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-5-131729918-null-null.nonecase&utm_term=%E7%BB%BF%E8%81%94nas

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享