基于Docker镜像elleflorio/svn-server搭建SVN服务器

搭建过程如下:

本文中是基于dcoker镜像elleflorio/svn-server进行部署,部署过程若有不妥之处,还请各路大神指点一二。镜像信息可在Docker Hub中搜索进行查看。

1、在宿主机创建svn相关目录

mkdir -p /data/svn/repo
chmod 777 /data/svn/repo
  1. 创建放svn配置及仓库的目录
  2. 仓库给予权限为777,否则在svnadmin无法创建目录

2、拉取最新镜像

docker pull elleflorio/svn-server

3、运行容器

docker run --privileged=true -d --name svn-server -p 8011:80 -p 3690:3690 -v elleflorio/svn-server

4、复制容器中SVN配置文件至宿主机

docker cp svn-server:/etc/subversion /data/svn

5、停止并移除容器

docker stop svn-server
docker rm svn-server

6、运行容器并挂载配置及SVN目录

docker run --privileged=true -d --name svn-server -p 8011:80 -p 3690:3690 \
  -v /data/svn/repo:/home/svn \
  -v /data/svn/subversion-access-control:/etc/subversion/subversion-access-control  \
  -v /data/svn/passwd:/etc/subversion/passwd  \
  elleflorio/svn-server

1、端口80113690可修改为自己要使用的端口;
2、 8011对应于容器内httpd的80端口,也是用于外部访问svn的端口。

7、查看是否运行成功

docker ps

若能够看到有svn-server正在运行中,则启动成功

8、修改容器内的httpd.conf中的ServerName

此时如果使用docker logs svn-server查看日志会发现以下错误
在这里插入图片描述
因此,需要修改httdp.conf的错误

docker exec -it svn-server /bin/sh
cd /etc/apache2/
vi httpd.conf

在这里插入图片描述
找到ServerName,去掉注释或者Copy一行,修改为自己的域名或IP+端口,如ServerName 192.168.1.2:8011
退出容器

exit

重启容器并查看日志

docker restart svn-server
docker logs svn-server

在这里插入图片描述

9、配置svnadmin

访问http://192.168.1.2:8011(此地址为模拟地址)设置svnadmin

Subversion authorization file: /etc/subversion/subversion-access-control
User authentication file (SVNUserFile):/etc/subversion/passwd
Parent directory of the repositories (SVNParentPath):/home/svn
Subversion client executable:/usr/bin/svn
Subversion admin executable:/usr/bin/svnadmin

在这里插入图片描述
点击保存后,会默认创建admin/admin用户,进入界面后可修改admin的默认密码。

10、总结

  1. 使用elleflorio/svn-server镜像搭建SVN后,相对比较方便及快捷;
  2. 可通过elleflorio/svn-server容器中的svnadmin对SVN进行管理,创建资源库、管理用户及授权访问等比较方便。

参考文章:
[1] Docker构建Svn服务器
[2] docker安装svn创建创库 svnadmin create repo时报错提示没有权限问题
[3] Docker Hub:https://hub.docker.com/r/elleflorio/svn-server

### 进入名为 `svn-server` 的容器并启动交互式 Shell 要进入名为 `svn-server` 的容器并启动交互式的 `sh` shell,可以使用以下命令: ```bash docker exec -it svn-server sh ``` 上述命令中的参数解释如下: - `-i` 表示保持标准输入流打开,以便能够与容器内的进程进行交互[^1]。 - `-t` 表示分配一个伪终端(pseudo-TTY),从而模拟真实的终端环境。 如果目标容器使用的不是 `sh` 而是其他类型的 shell(例如 `bash`),则可以根据实际情况替换命令中的 `sh` 部分。例如: ```bash docker exec -it svn-server bash ``` 需要注意的是,在执行此操作之前,应确保该容器正在运行状态。可以通过以下命令查看当前运行的容器列表及其状态: ```bash docker ps ``` 或者为了更全面地了解所有容器的状态(包括停止的容器),可使用扩展选项: ```bash docker ps -a ``` 只有当目标容器处于活动状态时,才能成功连接到其内部 shell 环境[^4]。 ### 示例代码 以下是完整的流程演示: #### 步骤一:确认容器是否在运行 ```bash docker ps ``` #### 步骤二:进入容器的交互式 shell 假设容器名称为 `svn-server` 并支持 `sh` 命令,则执行以下指令: ```bash docker exec -it svn-server sh ``` --- ### 注意事项 1. 如果尝试进入容器失败,请检查容器的实际名称或 ID 是否正确。可通过 `docker ps` 或 `docker ps -a` 获取确切的信息。 2. 若容器未配置任何可用的 shell(如既无 `sh` 也无 `bash`),可能需要重新定制镜像来包含所需的工具[^3]。 ---
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值