svnserver应用
本教程学习内容:
如果还没有docker镜像仓库账户的,先到 阿里云容器镜像仓库注册一个账户,创建好名为php的仓库,再进行下面的教程
使用URLOS制作svnserver镜像
使用ssh登录安装有URLOS的云主机(URLOS的安装请参考官方教程)。
创建Dockerfile文件,并填入以下内容:
From alpine:3.9
ENV TIME_ZONE Asiz/Shanghai
RUN sed -i 's@dl-cdn.alpinelinux.org@mirrors.aliyun.com@' /etc/apk/repositories \
&& apk update && apk add --no-cache openssh-server \
&& sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config \
&& ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key \
&& ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key \
&& ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key \
&& apk add subversion && rm -rf /var/cache/apk/* \
&& test -d /data/svn || mkdir -p /data/svn && chmod -R 777 /data/svn
WORKDIR /data/svn
EXPOSE 3690
CMD [ "/usr/bin/svnserve", "--daemon", "--foreground", "--root", "/data/svn" ]
执行以下命令(包括最后面的”.”),生成docker镜像:
docker build -t registry.cn-shanghai.aliyuncs.com/urlos4/svnserver:latest-alpine3.9 .
注:这里的urlos4为命名空间,registry.cn-shanghai.aliyuncs.com为阿里仓库线路的域名,请根据自己实际的替换
运行镜像并进入容器,命令如下:
docker run -itd --name svnserver001 -p 3690:3690 registry.cn-shanghai.aliyuncs.com/urlos4/svnserver:latest-alpine3.9 # 创建容器的命令 对外端口是8080,根据情况自己填写合适的端口
docker exec -it svnserver001 sh # 进入容器的命令
创建容器失败的情况:如果是端口冲突,换一个端口;如果是容器名字冲突,换一个容器的名字或者删除已存在的容器。查看所有容器:“docker ps -a”,删除容器:执行命令“docker rm -f 容器id”。
创建project仓库,设置project的相关配置:
svnadmin create project
vi /data/svn/project/conf/svnserve.conf
### 需要设置内容如下
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = /data/svn/project
## 增加svn账户和密码
vi /data/svn/project/conf/passwd
## 内容如下
admin=admin123
## 设置账户的权限
vi /data/svn/project/conf/authz
## 在最后面添加以下内容
[/]
admin = rw
使用svn客户端登录,检查是否正常使用。地址svn://ip/project
确认无误后,能够正常打开这个页面后:
docker rm -f 容器id # 删除刚才用于检查测试的容器
docker login --username=您的用户名 registry.cn-shanghai.aliyuncs.com # 登录到阿里云容器镜像仓库
docker push registry.cn-shanghai.aliyuncs.com/urlos4/svnserver:latest-alpine3.9 # 上传到仓库
注:这里的urlos4为命名空间,registry.cn-shanghai.aliyuncs.com为阿里仓库线路的域名,请根据自己实际的替换
添加镜像到URLOS
登录URLOS, 未安装URLOS的,请参考官方教程
选择镜像管理 ,点击页面右上角添加按钮:
registry.cn-shanghai.aliyuncs.com/urlos4/svnserver:latest-alpine3.9
注:这里的urlos4为命名空间,registry.cn-shanghai.aliyuncs.com为阿里仓库线路的域名,请根据自己实际的替换
填写镜像大小,执行以下命令可查看本地仓库中显示的镜像大小
docker images
配置填写后,点击提交,保存到URLOS。
基于添加的镜像创建svnserver应用
添加应用 配置如下:
脚本设置:
# 安装脚本
test -d /data/svn || mkdir -p /data/svn;
if [ ! -d /data/svn/project ]; then
cd /data/svn
svnadmin create project && chmod -R 777 project
fi
# 启动脚本
/usr/sbin/sshd
svnserve -d -r /data/svn
# 状态脚本
status1=0 && (ps -ef|grep "/usr/sbin/sshd"|grep -v "grep") && status1=1;
status2=0 && (ps -ef|grep "svnserve"|grep -v "grep") && status2=1;
if [ ${status1} != 0 ] && [ ${status2} != 0 ]; then
statusScriptResult=1
fi
# 监控脚本
{w:statusScript:w}
[ "$statusScriptResult" != 1 ] && exit 1
按照上面的配置填写后,点击提交。
创建svnserver应用的模板
分别添加下面3个模版:
/data/svn/project/conf/svnserve.conf
/data/svn/project/conf/passwd
/data/svn/project/conf/authz
添加**svnserve.conf**模板
![image-20200414135829160](/projects/urlos-dev-v1.2/e19f661f330530e878c627d62b13b8ec.png)
![image-20200414135840427](/projects/urlos-dev-v1.2/ccfa95960fe45c00c8c8e118802e484b.png)
模板内容 :
```
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
#groups-dn=groups
realm = /data/svn/project
#force-username-case = none
#hooks-env = hooks-env
[sasl]
#use-sasl = true
#min-encryption = 0
#max-encryption = 256
```
添加**passwd**模板 ![image-20200414140123226](/projects/urlos-dev-v1.2/f9f1f51cc24144793acee62def289b58.png)
![image-20200414140132093](/projects/urlos-dev-v1.2/1096ba9e0411320576b387321444ca60.png)
模板内容 :
```
[users]
admin = admin123
```
添加**authz**模板
![image-20200414140658219](/projects/urlos-dev-v1.2/340abba3acc4052de500d45e3b8a094e.png)
![image-20200414140709896](/projects/urlos-dev-v1.2/c28c05b5d40668b9b922a7f90b4073f9.png)
模板内容:
```
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/]
admin = rw
* = r
```
添加svnserver应用的扩展变量
分别添加下面2个扩展变量:
- sshPassword(ssh登录密码)
- sshCaption(ssh设置提示)
添加扩展变量sshPassword
添加扩展变量sshCaption
这样,svnserver应用创建完成。
安装svnserver应用并测试
在应用管理列表找到刚才新添加的svnserver应用,选择创建服务
填写如下:
按照上面的配置填写后,提交部署。
部署完成后,使用ssh登录工具,检测能否登入容器内部
使用svn客户端checkout,检测是否可正常使用