話不多說直接上步驟!
1.下載鏡像,創(chuàng)建容器
# 下載鏡像
docker pull elleflorio/svn-server
# 創(chuàng)建svn倉(cāng)庫(kù)目錄,進(jìn)入svn倉(cāng)庫(kù)目錄
mkdir -p /var/svn
# 創(chuàng)建svn服務(wù)容器,把容器中的svn倉(cāng)庫(kù)映射到本機(jī),并映射3690端口
docker run -d --name svn-server -p 3690:3690 -v "$PWD":/home/svn -v /var/www/html:/var/www/html elleflorio/svn-server
2.在服務(wù)器創(chuàng)建代碼倉(cāng)庫(kù)
# 創(chuàng)建代碼倉(cāng)庫(kù)
docker exec -t svn-server svnadmin create /home/svn/test
以上代碼中,在容器中的/home/svn/test目錄創(chuàng)建代碼倉(cāng)庫(kù),會(huì)同步到本機(jī)的/var/svn目錄。我們先進(jìn)行svn倉(cāng)庫(kù)配置。
SVN庫(kù)中的配置目錄 conf 有三個(gè)文件:
authz 是權(quán)限控制文件
passwd 是帳號(hào)密碼文件
svnserve.conf 是SVN服務(wù)綜合配置文件
配置權(quán)限配置文件 authz
編輯 authz ,內(nèi)容參考如下:
[groups]
#用戶組
admin = master,master
#用戶組所對(duì)應(yīng)的目錄
[/]
#庫(kù)目錄權(quán)限
@admin = rw
#用戶組權(quán)限
*=r
第一種方式:?jiǎn)蝹€(gè)添加:
# 按賬號(hào)分權(quán)限
[test/]
admin = rw
test = r
第二種方式(后面采用此方式配置):用戶分組,再設(shè)權(quán)限
[groups]
# 按用戶組分權(quán)限
admin = admin,admin1 # admin為用戶組,等號(hào)之后的為用戶
test = test1, test2 # test為用戶組,等號(hào)之后的為用戶
[/] # 表示svn倉(cāng)庫(kù)目錄(/var/svn/test),test: 對(duì)應(yīng)前面配置的realm = test
@admin = rw # 表示admin組對(duì)倉(cāng)庫(kù)(/var/svn/test)目錄有讀寫權(quán)限,r為讀,w為寫
@test = r # 表示test組的用戶對(duì)對(duì)倉(cāng)庫(kù)(/var/svn/test)目錄只有讀的權(quán)限
[/test1] # 表示test1目錄(/var/svn/test/test1)
@test = rw # 表示test組對(duì)test1目錄有讀寫權(quán)限
* =
備注:版本庫(kù)的目錄格式如下:
[<版本庫(kù)>:/項(xiàng)目/目錄]
@<用戶組名> = 權(quán)限
<用戶名> = 權(quán)限
其中[]內(nèi)容有許多寫法:
[/],表示根目錄及其一下的路徑,根目錄是svnserver啟動(dòng)時(shí)指定好的,上述實(shí)例中我們指定為:/svn/svndata([/]=/svn/svndata).[/]就是表示對(duì)全部版本設(shè)置的權(quán)限
[test:/],表示對(duì)版本庫(kù)test設(shè)置權(quán)限;
[test:/svnadmin],表示對(duì)版本庫(kù)test中的svnadmin項(xiàng)目設(shè)置權(quán)限;
[test:/svnadmin/second],表示對(duì)版本庫(kù)test中的svnadmin項(xiàng)目的目錄設(shè)置權(quán)限;
權(quán)限的主體可以是用戶組,用戶或者*,用戶組在前面要以@開頭,*表示全部用戶
權(quán)限分為:r ,w, rw和null ,null空表示沒有任何權(quán)限。
auhtz配置文件中的每個(gè)參數(shù),開頭不能有空格,對(duì)于組要以@開頭,用戶不需要。
配置賬號(hào)密碼文件 passwd
編輯 passwd ,內(nèi)容參考如下:
[users]
# harry = harryssecret
# sally = sallyssecret
master = master
admin = admin
配置 SVN 服務(wù)綜合配置文件 svnserve.conf
編輯 svnserve.conf ,內(nèi)容參考如下:
[general]
# force-username-case = none
# 匿名訪問的權(quán)限 可以是read、write,none,默認(rèn)為read
anon-access = none
#使授權(quán)用戶有寫權(quán)限
auth-access = write
#密碼數(shù)據(jù)庫(kù)的路徑
password-db = passwd
#訪問控制文件
authz-db = authz
#認(rèn)證命名空間,SVN會(huì)在認(rèn)證提示里顯示,并且作為憑證緩存的關(guān)鍵字
realm = /var/svn/test
[sasl]
3.同步代碼到服務(wù)器項(xiàng)目目錄
(1)在PC上將代碼上傳到svn倉(cāng)庫(kù)(PC上必須安裝SVN)
# 將倉(cāng)庫(kù)中的代碼pull到本地,下面的123.123.123.123代表的是服務(wù)器IP地址,以下過程可能會(huì)需要輸入svn賬號(hào)和密碼
svn checkout svn://123.123.123.123/test
# 進(jìn)入代碼目錄
cd test
# 創(chuàng)建示例文件
echo "hello" >> test.txt
# 提交代碼到SVN倉(cāng)庫(kù)
svn add test.txt
svn commit test.txt -m 'test'
(2)服務(wù)器同步代碼
# 將代碼同步到項(xiàng)目目錄
docker exec -t svn-server svn checkout svn://127.0.0.1/test /var/www/html/test --username master --password master --force --no-auth-cache
(3)自動(dòng)同步代碼
實(shí)際上,如果我們用于開發(fā)的PC每一次向服務(wù)器提交一次代碼,服務(wù)器都需要手動(dòng)執(zhí)行一下同步命令,本地代碼才會(huì)同步到服務(wù)器的項(xiàng)目目錄。想必很麻煩,于是我們可以使用SVN提供的鉤子去實(shí)現(xiàn)代碼自動(dòng)更新。
# 進(jìn)入鉤子配置文件目錄
cd /var/svn/test/hooks
# 復(fù)制鉤子文件
cp post-commit.tmpl post-commit
我們將post-commit.tmpl鉤子文件的后綴名去掉即可生效,于是我們復(fù)制一份。接下來我們編輯post-commit文件,注釋掉發(fā)送郵件的代碼。然后在下面加上兩行代碼即可,如下:
REPOS="$1"
REV="$2"
TXN_NAME="$3"
#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
# 設(shè)置編碼
export LANG="en_US.UTF-8"
# 更新代碼到項(xiàng)目目錄
svn update --username master --password master /var/www/html/test
編輯完成配置文件之后,我們只需要保存即可,自動(dòng)生效。此時(shí)在PC上修改項(xiàng)目?jī)?nèi)容,再次提交到代碼倉(cāng)庫(kù),服務(wù)器會(huì)自動(dòng)同步到服務(wù)器的項(xiàng)目目錄。不再需要手動(dòng)執(zhí)行svn checkout指令文章來源:http://www.zghlxwxcb.cn/news/detail-782380.html
使用svn小烏龜連接時(shí),注意url:svn://ip/項(xiàng)目名
文章來源地址http://www.zghlxwxcb.cn/news/detail-782380.html
到了這里,關(guān)于【docker】部署svn服務(wù)器,docker安裝部署svn服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!