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

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

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

完成后,我們使用 admin 用戶隨便創(chuàng)建一個文件并提交,然后使用 test 用戶拉去嘗試修改,試試能否成功,不能成功才是對的,因為 test 用戶只有讀的權限。這里大家自己嘗試一下就可以了,我就不截圖一個一個的演示了。
到此這篇關于Docker搭建SVN服務器的實現(xiàn)步驟的文章就介紹到這了,更多相關Docker搭建SVN內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker部署springboot項目到騰訊云的實現(xiàn)步驟
本文主要介紹了Docker部署springboot項目到騰訊云的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04
在Docker中運行Java JAR包的實戰(zhàn)教程
這篇文章詳細介紹了使用Docker運行Java應用的全過程,從環(huán)境準備到構建與運行,再到進階配置和最佳實踐,需要的朋友可以參考下2025-12-12

