说明
本文基于docker部署线上svn服务,系统、docker版本和镜像信息如下:
CentOS Linux release 7.8.2003 (Core)
Docker version 19.03.13, build 4484c46d9d
docker-compose version 1.27.4, build unknown
docker pull marvambass/subversion:latest
详细部署流程和操作步骤如下~
svn服务文件结构
# pwd
/data
# tree svn-server/ -L 2
svn-server/
├── docker-compose.yml
├── svn
│ └── agsrd
├── svn_backup
└── svn_conf
├── dav_svn.authz
└── dav_svn.passwd
docker-compose.py文件
version: "3.8"
services:
svn:
image: marvambass/subversion
restart: always
container_name: "svn-server"
hostname: "svn-server"
environment:
TZ: 'Asia/Shanghai'
deploy:
replicas: 1
ports:
- '10080:80'
- '10443:443'
volumes:
- ./svn:/var/local/svn
- ./svn_backup:/var/svn-backup
- ./svn_conf:/etc/apache2/dav_svn
配置用户及其访问权限
在启动服务之前,我们需要建立一下目录和文件~
mkdir -p /data/svn-server/svn
mkdir -p /data/svn-server/svn_backup
mkdir -p /data/svn-server/svn_conf
创建权限配置文件
根据需求创建配置文件 /data/svn-server/svn_conf/dav_svn.authz 示例内容如下:
[groups]
# 管理组
admin = hb.xia
# 研发组
rdgroupall = liy,gt.yuan,chm.ni,yb.he,zhong.pan,hb.xia,jy.wang
# 生产组
pdgroupall = liy,gt.yuan,chm.ni,zhong.pan,hb.xia
# 人事行政组
adhrgroupall = jy.chen
# 人事行政项目文档
[panboadhr:/]
@adhrgroupall = rw
# AGS 项目研发存放文档
[agsrd:/]
@rdgroupall = rw
# AGS 项目生产存放文档
[agspd:/]
@pdgroupall = rw
# 管理账户有所有账户的访问权限
[/]
@admin = rw
创建对应用户及密码
# 密码文件路径:
/data/svn-server/svn_conf/dav_svn.passwd
# 密码文件在 Docker 中对应路径:
/etc/apache2/dav_svn/dav_svn.passwd
# 若在 svn 容器宿主机上创建密码文件则需在宿主机上安装 svn 密码文件创建工具
## Ubuntu
sudo apt install apache2-utils
## centos/ubuntu
sudo yum -y install httpd-tools
# 首次创建使用 -c 选项,该选项密码文件不存在时则创建,存在则清空,慎用!
htdigest -c 密码文件路径 Subversion 用户名
# 向密码文件中添加一个用户
htdigest 密码文件路径 Subversion 用户名
# 宿主机中创建密码文件示例:(按照提示输入添加的用户名的密码)
htdigest -c /data/svn-server/svn_conf/dav_svn.passwd Subversion hb.xia
htdigest /data/svn-server/svn_conf/dav_svn.passwd Subversion yb.he
# 运行的容器中创建密码文件示例:(按照提示输入添加的用户名的密码)
docker exec -i -t svn htdigest -c /etc/apache2/dav_svn/dav_svn.passwd Subversion hb.xia
docker exec -i -t svn htdigest /etc/apache2/dav_svn/dav_svn.passwd Subversion yb.he
启动 docker-compose 服务
cd /data/svn-server
# 后台方式启动服务
docker-compose up -d
# 查看服务运行状态
docker-compose ps
# 查看服务运行日志
docker logs svn-server
# 停止服务
docker-compose down
说明:对外开放的访问端口: 10080 为 http 访问端口; 10443 为 https 访问端口。
svn访问和使用
访问方式
打开浏览器访问:http://yourDockerIp/svn/yourRepo
,其中,/svn
是默认仓库的路由地址。
仓库创建
如上文中agsrd
仓库的创建:
cd /data/svn-server/svn
svnadmin create agsrd