Docker 部署 SVN(Subvision) 版本控制服务
前段时间给公司搭建了一个 SVN(Subvision) 版本控制服务,用于公司重要工作文档的版本控制。该 SVN(Subvision) 版本控制服务使用了 Docker 来搭建,具体搭建步骤如下:
一、创建数据存放目录
这里将 SVN(Subvision) 数据存放至 /home/pbversion/Subversion/ 目录下,如需更换目录以下对应位置自行替换,确保其具有读写权限。
mkdir -p /home/pbversion/Subversion/svn
mkdir -p /home/pbversion/Subversion/svn_backup
mkdir -p /home/pbversion/Subversion/svn_conf
该 SVN(Subvision) 数据存放目录切不可删除!!!
后期做服务器迁移时该目录务必保证其完整性,除非您真的不想要这些数据。
后期做服务器迁移时该目录务必保证其完整性,除非您真的不想要这些数据。
二、导入 SVN(Subvision) Docker 镜像
docker pull marvambass/subversion:latest
latest 为发布版本号,这里使用最新构建的版本,可根据需要自行替换相应版本号。
三、配置用户及其访问权限
1. 创建权限配置文件
按照上述配置规则根据需求创建配置文件 /home/pbversion/Subversion/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
2. 创建对应用户及密码
密码文件路径: /home/pbversion/Subversion/svn_conf/dav_svn.passwd
密码文件在 Docker 中对应路径: /etc/apache2/dav_svn/dav_svn.passwd
# 若在 svn 容器宿主机上创建密码文件则需在宿主机上安装 svn 密码文件创建工具
sudo apt install apache2-utils
# 首次创建使用 -c 选项,该选项密码文件不存在时则创建,存在则清空,慎用!
htdigest -c 密码文件路径 Subversion 用户名
# 向密码文件中添加一个用户
htdigest 密码文件路径 Subversion 用户名
# 宿主机中创建密码文件示例:(按照提示输入添加的用户名的密码)
htdigest -c /home/pbversion/Subversion/svn_conf/dav_svn.passwd Subversion hb.xia
htdigest /home/pbversion/Subversion/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 镜像
docker run --name svn \
--detach \
--restart always \
--publish 10083:80 --publish 10084:443 \
--volume /home/pbversion/Subversion/svn:/var/local/svn \
--volume /home/pbversion/Subversion/svn_backup:/var/svn-backup \
--volume /home/pbversion/Subversion/svn_conf:/etc/apache2/dav_svn \
marvambass/subversion:latest
对外开放的访问端口: 10083 为 http 访问端口; 10084 为 https 访问端口。
latest 为启动的 SVN(Subvision) 的 Docker 镜像版本号,升级版本自行替换对应的镜像版本号。
五、升级 SVN(Subvision) 版本管理服务版本
1. 先停止并删除正在运行的 SVN(Subvision) 的 Docker 镜像运行实例
docker stop svn
docker rm svn
2. 参考上述步骤二下载要升级替换的 SVN(Subvision) 镜像版本
docker pull marvambass/subversion:latest
这里举例替换为最新构建版本 latest 。
3. 参考上述步骤四启动对应升级后的 SVN(Subvision) 镜像
六、故障维护
1. 查看容器运行状态
(下图中标示的绿色下划线代表状态,蓝色下划线代表容器名称)
2. 查看异常的容器启动运行日志,根据日志查看对应运行状态或相关故障信息
docker logs svn
3. 当启动失败可以简单尝试重新启动容器运行实例
- 参考上述步骤五 .1 先停止并删除正在运行的 SVN(Subvision) 的 Docker 镜像运行实例。
- 参考上述步骤四重新启动新的 SVN(Subvision) 的 Docker 镜像运行实例。
七、其他帮助信息
遇到其他一些问题或者需要配置其他一些功能可参考帮助文档。