Docker部署Subversion(SVN)
基于docker run部署
1. 使用 Docker 运行 SVN 服务容器
1 | docker run -d --name svn-server \ |
- 容器名为
svn-server - 数据挂载到宿主机
/data/svn - 对外暴露 3690 端口,支持重启自动启动
2. 在容器内部创建 SVN 仓库
1 | docker exec -it svn-server svnadmin create default-repo |
- 创建名为
default-repo的 SVN 仓库
3. 配置仓库权限与用户访问
default-repo/conf下对文件配置权限
编辑
svnserve.conf,取消注释并设置:[general] auth-access = write password-db = passwd authz-db = authz编辑
passwd文件,添加用户,例如:[users] admin = Svn#2022编辑
authz文件,设置权限:[groups] owner = admin [/] admin = rw此处表示
admin用户属于owner组,并具备对根目录的读写权限
4. 在客户端使用 SVN
- Windows 用户安装 TortoiseSVN 客户端
- 本地新建工作目录,如
svn-workdir - 右键选择 Checkout,输入仓库地址(格式
svn://<服务器IP>/default-repo) - 在本地创建文件后使用 Commit 提交,输入用户名密码即可上传
基于docker-compose启动
适用于 Subversion (SVN) 服务的 docker-compose.yml** 以及配套的初始化方式(包括用户/权限/仓库的配置),做到开箱即可用、持久化、安全性有基础保障。
1. 目录结构
svn-deploy/
├── docker-compose.yml
├── init/
│ ├── svnserve.conf
│ ├── passwd
│ └── authz
└── data/ # 实际 SVN 仓库数据会挂在这里
2. docker-compose.yml
1 | version: "3.9" |
说明:
- 用
garethflowers/svn-server:1.7作为基础镜像,可替换为更新/自定义的镜像。- 通过挂载初始化配置文件(
svnserve.conf、passwd、authz)实现权限与用户预设。- 绑定宿主机
./data目录保证数据不丢失。- Healthcheck 简单验证仓库可访问(可根据实际环境调整地址/仓库名)。
3. 配置文件(放在 init/ 目录)
svnserve.conf
1 | [general] |
passwd
1 | [users] |
authz
1 | [groups] |
解释:
admin属于owners组,拥有根目录读写;dev只有只读权限。- 密码可替换为更安全的做法(如外部密钥管理/一次性生成后手动更新)。
4. 仓库初始化
该镜像默认会在首次启动时创建一个名为 default-repo 的仓库(路径在 /var/opt/svn/default-repo)。如果你希望创建多个仓库或用自定义名字,可以在宿主机 ./data 里手动初始化
1 | # 进入容器 |
5. 启动
1 | docker compose up -d |
检查状态:
1 | docker compose ps |
6. 客户端访问示例
1 | svn checkout svn://<服务器IP>/default-repo --username admin |