Docker搭建SVN服務(wù)器的實(shí)現(xiàn)步驟
序言
- SVN 官網(wǎng): Apache Subversion Binary Packages
- SVN 客戶端: 下載 · TortoiseSVN - TortoiseSVN 軟件
本篇文章只介紹如何在 Linux 服務(wù)器上安裝 SVN,客戶端工具的使用不做介紹。 下面的文章以 Centos 8 系統(tǒng)來做為 Linux 服務(wù)器,對于其他版本的服務(wù)器可以參考官方文檔。
檢查環(huán)境
查看系統(tǒng)下有沒有安裝過或有安裝過老版本的 SVN,如果沒有安裝,則什么都不會顯示
[root@localhost ~]# rpm -ql subversion 未安裝軟件包 subversion
如果有老版本的話先刪除一下老版本
[root@localhost opt]# yum -y remove subversion 未找到匹配的參數(shù): subversion 沒有軟件包需要移除。 依賴關(guān)系解決。 無需任何處理。 完畢! [root@localhost opt]#
下載安裝
我這里建議通過 docker 來安裝 svnserver
# 下載鏡像 docker pull garethflowers/svn-server # 創(chuàng)建svn倉庫目錄,進(jìn)入svn倉庫目錄, 用于掛載數(shù)據(jù) mkdir -p /var/svn/repos /var/svn/conf
啟動svn容器
docker run -d \ --name svn-server \ -p 3690:3690 \ -v /var/svn/repos:/var/opt/svn \ -v /var/svn/conf:/etc/subversion \ --restart=always \ garethflowers/svn-server
參數(shù)說明:
-p 3690:3690:映射 SVN 默認(rèn)端口-v:掛載本地目錄到容器,實(shí)現(xiàn)數(shù)據(jù)持久化--restart=always:設(shè)置容器隨 Docker 自動啟動
創(chuàng)建項(xiàng)目和配置權(quán)限
創(chuàng)建項(xiàng)目需要進(jìn)入 SVN 容器內(nèi)部創(chuàng)建,命令為: docker exec -it svn-server /bin/sh
成功后的界面如下:
[root@localhost svn]# docker exec -it svn-server /bin/sh / #
接下來我們創(chuàng)建一個倉庫,并配置用戶和讀寫權(quán)限 svnadmin create /var/opt/svn/myproject 這里倉庫就已經(jīng)創(chuàng)建完畢了,這個倉庫會同步到主機(jī)的 /var/svn/repos 目錄下。
[root@localhost repos]# pwd /var/svn/repos [root@localhost repos]# ll 總用量 4 drwxr-xr-x. 6 root root 4096 8月 20 10:15 myproject [root@localhost repos]#
接下來,我們來進(jìn)行 SVN 倉庫的配置,倉庫的配置文件就位于 conf 目錄下

這里有三個重要的配置文件
- authz: 負(fù)責(zé)賬號權(quán)限的管理,控制賬號是否讀寫權(quán)限
- passwd: 負(fù)責(zé)賬號和密碼的用戶名單管理
- svnserve.conf: svn 服務(wù)器配置文件
配置用戶密碼
編輯 passwd 文件, 添加兩個用戶, 格式為:用戶名 = 密碼

配置權(quán)限控制
這里通過用戶組來進(jìn)行權(quán)限控制,單個用戶的控制比較麻煩,不進(jìn)行演示,在公司里面大多都是以用戶組來控制權(quán)限的。auhtz配置文件中的每個參數(shù),開頭不能有空格,對于組要以@開頭,用戶不需要。
[groups]部分:定義用戶組
# 這里兩個用戶分別對應(yīng)上面創(chuàng)建的用戶 [groups] admin_group = admin test_group = test
- 作用:將多個用戶歸類到 “用戶組”,方便批量管理權(quán)限(避免對每個用戶單獨(dú)設(shè)置權(quán)限)。
- 格式:
組名 = 用戶名1,用戶名2,...(多個用戶用逗號分隔,無空格)。 - 示例說明:
admin_group = admin:創(chuàng)建一個名為admin_group的組,包含用戶admin(這個用戶需在passwd文件中已定義)。test_group = test:創(chuàng)建一個名為test_group的組,包含用戶test(同樣需在passwd中存在)。
[權(quán)限規(guī)則部分]:控制訪問范圍和權(quán)限
[/] @admin_group = rw @test_group = r * =
[/]:表示權(quán)限作用的范圍。/代表倉庫的根目錄。這個地方不要誤解, 這個表示對于每個倉庫自身的根目錄- 如果想針對某個特定倉庫配置權(quán)限(而非所有倉庫),可以寫成
[倉庫名:/],例如[myproject:/]表示只對myproject倉庫生效。
- 如果想針對某個特定倉庫配置權(quán)限(而非所有倉庫),可以寫成
- 權(quán)限規(guī)則說明:
@admin_group = rw:@符號表示 “用戶組”,這條規(guī)則表示admin_group組的所有用戶對/范圍有rw權(quán)限。rw是權(quán)限組合:r(read,讀權(quán)限,可檢出、更新代碼)和w(write寫權(quán)限,可提交、修改代碼)。
@test_group = r:test_group組的用戶只有r權(quán)限(只能看代碼,不能修改提交)。* =:*表示 “所有未匹配的用戶 / 組”,=表示 “無任何權(quán)限”。這條規(guī)則是安全兜底,確保除了上面明確授權(quán)的用戶組,其他用戶無法訪問。
更精細(xì)的權(quán)限控制
如果需要對倉庫的子目錄設(shè)置不同權(quán)限(例如只允許某個組修改特定目錄),可以添加更具體的規(guī)則,例如:
# 對 myproject 倉庫的 /trunk 目錄設(shè)置權(quán)限 [myproject:/trunk] @admin_group = rw # 管理員可讀寫 @dev_group = r # 開發(fā)組只讀 # 對 myproject 倉庫的 /branches/dev 目錄設(shè)置權(quán)限 [myproject:/branches/dev] @dev_group = rw # 開發(fā)組可讀寫該分支 @admin_group = rw # 管理員仍有讀寫權(quán)限 * = # 其他用戶無權(quán)限
配置 svnserve.conf
編輯 svnserve.conf ,內(nèi)容參考如下:
# force-username-case = none # 匿名訪問的權(quán)限 可以是read、write,none,默認(rèn)為read anon-access = none #使授權(quán)用戶有寫權(quán)限,前提是 authz 文件中也允許 auth-access = write #指定用戶密碼文件的路徑 password-db = passwd #訪問控制文件 authz-db = authz #認(rèn)證命名空間,SVN會在認(rèn)證提示里顯示,并且作為憑證緩存的關(guān)鍵字,應(yīng)該具有唯一性 realm = /var/svn/tes
測試
上述配置修改完后,重啟 docker 容器,接下來,我們使用 admin 用戶來測試修改提交代碼

完成后,我們使用 admin 用戶隨便創(chuàng)建一個文件并提交,然后使用 test 用戶拉去嘗試修改,試試能否成功,不能成功才是對的,因?yàn)?test 用戶只有讀的權(quán)限。這里大家自己嘗試一下就可以了,我就不截圖一個一個的演示了。
到此這篇關(guān)于Docker搭建SVN服務(wù)器的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker搭建SVN內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker CentOS7的系統(tǒng)上安裝部署以及基礎(chǔ)教程
這篇文章主要介紹了Docker CentOS7的系統(tǒng)上安裝部署以及基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考下2016-10-10
使用docker輕松幾步打造個人專屬圖床的實(shí)現(xiàn)步驟
本文主要介紹了使用docker打造個人專屬圖床的實(shí)現(xiàn)步驟,可以快速搭建屬于您自己的圖床,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
使用Docker部署LMS輕量級音樂服務(wù)器的實(shí)現(xiàn)步驟
本文主要介紹了使用Docker部署LMS輕量級音樂服務(wù)器的實(shí)現(xiàn)步驟,為用戶提供了強(qiáng)大而靈活的音樂管理和播放體驗(yàn),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
Docker 分布式倉庫 Harbor的實(shí)現(xiàn)
Harbor 是一個用于存儲和分發(fā) Docker 鏡像的企業(yè)級 Registry 服務(wù)器,本文就來介紹一下Docker 分布式倉庫 Harbor的實(shí)現(xiàn),感興趣的可以了解一下2025-08-08
通過容器提交鏡像DockerCommit及推送鏡像DockerPush
這篇文章主要介紹了通過容器提交鏡像DockerCommit及推送鏡像DockerPush,文中通過詳細(xì)的示例代碼進(jìn)行了詳細(xì)分解,有需要的朋友可以借鑒參考下2021-09-09

