docker搭建SVN(非常詳細,網上的教程很多坑都填了)
2018年11月16日 17:26:35 walk_thinker 閱讀數:2261
容器 github目錄 https://github.com/elleFlorio/svn-docker
1.docker search svn
- docker pull docker.io/elleflorio/svn-server 這個帶有http協議
3.構建svn容器
docker run -v /usr/local/svn:/home/svn -v /usr/local/svn/passwd:/etc/subversion/passwd -v /usr/local/apache2:/run/apache2 --name hltz_svn -p 3380:80 -p 3690:3960 -e SVN_REPONAME=repos -d docker.io/elleflorio/svn-server
映射/usr/local/apache2:/run/apache2 的目的是http啓動要在該目錄下創建一個文件,沒有映射目錄容器重啓之後目錄就不見了,沒有映射目錄會報下面那個錯誤(在容器中 find / -name ‘error.log’,可以查找到錯誤日誌)
SVN_REPONAME
用於指定新創建的代碼庫的名稱。
-
創建 http 訪問賬號
docker exec -t hltz_svn htpasswd -b /etc/subversion/passwd dqw Dqw
- 1
此賬號和密碼被寫入容器中的 HTTP 認證文件(/etc/subversion/passwd),且密碼是加密的。實踐經驗表明,既然用 http 協議訪問只能查看,那麼創建一個公共的賬號,供大家使用即可。也可創建與 svn 認證文件中一樣的賬號和密碼。
- 1
docker exec -it hltz_svn /bin/sh 進入容器中
- 1
- 創建資源庫/home/svn # svnadmin create /home/svn/repos
6.資源庫配置
/var/svn/repository/conf # vi svnserve.conf,把下面4個的#號去掉,左邊不能有空格
anon-access = none #使非授權用戶無法訪問
auth-access = write #使授權用戶有寫權限
password-db = passwd #指明密碼文件路徑
authz-db = authz #訪問控制文件
密碼文件讀取passwd
文件,授權信息讀取authz
文件。
7.編輯密碼文件
/var/opt/svn/repository/conf # vi passwd
設置 dqw用戶密碼是dqw
- vi authz
表示dqw賬戶是管理員, *=r表示所有用戶有讀權限, @admin =rw 這個用戶組有讀寫權限;
9.配置完成!由於構建容器的時候已經把宿主機svn目錄映射到svn容器中,所有/usr/local/svn/repository 目錄中可以直接配置svn,修改配置之後重啓容器即可!
10.搭建完成之後記得在阿里雲上配置3380端口的白名單
11.docker logs -t -f --since=“2018-01-01” --tail=50 hltz_svn
查看日誌:發現報錯
)進入容器中apache的安裝目錄:(視個人安裝情況而不同) [root@server ~]# cd /etc/apache2
2)編輯httpd.conf文件,搜索"#ServerName",添加ServerName localhost:80
[root@server conf]# ls
extra httpd.conf magic mime.types original
[root@server conf]# vi httpd.conf
#ServerName www.example.com:80
ServerName localhost:80
3)再重新啓動容器即可。
導入的時候報一下錯誤:
Error:svn: E000013: Can’t open file ‘/home/svn/repos/db/txn-current-lock’: Permission denied(沒有權限)
在容器中添加權限給目錄
chmod -R o+rw /home/svn
添加這個權限就可以了,因爲啓動svn是root用戶,但是你用idea的時候不是root用戶
在網頁上可以直接訪問,輸入賬號密碼就可以了
在idea跟eclipse中也一樣