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中也一样