svnserver应用

本教程学习内容:

  1. 使用URLOS制作svnserver镜像
  2. 添加镜像到URLOS
  3. 基于添加的镜像创建svnserver应用
  4. 安装svnserver应用并测试

如果还没有docker镜像仓库账户的,先到 阿里云容器镜像仓库注册一个账户,创建好名为php的仓库,再进行下面的教程

使用URLOS制作svnserver镜像

  1. 使用ssh登录安装有URLOS的云主机(URLOS的安装请参考官方教程)。

  2. 创建Dockerfile文件,并填入以下内容:

    1. From alpine:3.9
    2. ENV TIME_ZONE Asiz/Shanghai
    3. RUN sed -i 's@dl-cdn.alpinelinux.org@mirrors.aliyun.com@' /etc/apk/repositories \
    4. && apk update && apk add --no-cache openssh-server \
    5. && sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config \
    6. && ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key \
    7. && ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key \
    8. && ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key \
    9. && apk add subversion && rm -rf /var/cache/apk/* \
    10. && test -d /data/svn || mkdir -p /data/svn && chmod -R 777 /data/svn
    11. WORKDIR /data/svn
    12. EXPOSE 3690
    13. CMD [ "/usr/bin/svnserve", "--daemon", "--foreground", "--root", "/data/svn" ]
  3. 执行以下命令(包括最后面的”.”),生成docker镜像:

    1. docker build -t registry.cn-shanghai.aliyuncs.com/urlos4/svnserver:latest-alpine3.9 .

    注:这里的urlos4为命名空间,registry.cn-shanghai.aliyuncs.com为阿里仓库线路的域名,请根据自己实际的替换

  4. 运行镜像并进入容器,命令如下:

    1. docker run -itd --name svnserver001 -p 3690:3690 registry.cn-shanghai.aliyuncs.com/urlos4/svnserver:latest-alpine3.9 # 创建容器的命令 对外端口是8080,根据情况自己填写合适的端口
    2. docker exec -it svnserver001 sh # 进入容器的命令

    创建容器失败的情况:如果是端口冲突,换一个端口;如果是容器名字冲突,换一个容器的名字或者删除已存在的容器。查看所有容器:“docker ps -a”,删除容器:执行命令“docker rm -f 容器id”。

  5. 创建project仓库,设置project的相关配置:

    1. svnadmin create project
    2. vi /data/svn/project/conf/svnserve.conf
    3. ### 需要设置内容如下
    4. anon-access = read
    5. auth-access = write
    6. password-db = passwd
    7. authz-db = authz
    8. realm = /data/svn/project
    9. ## 增加svn账户和密码
    10. vi /data/svn/project/conf/passwd
    11. ## 内容如下
    12. admin=admin123
    13. ## 设置账户的权限
    14. vi /data/svn/project/conf/authz
    15. ## 在最后面添加以下内容
    16. [/]
    17. admin = rw
  6. 使用svn客户端登录,检查是否正常使用。地址svn://ip/project

  7. 确认无误后,能够正常打开这个页面后:

    1. docker rm -f 容器id # 删除刚才用于检查测试的容器
    2. docker login --username=您的用户名 registry.cn-shanghai.aliyuncs.com # 登录到阿里云容器镜像仓库
    3. docker push registry.cn-shanghai.aliyuncs.com/urlos4/svnserver:latest-alpine3.9 # 上传到仓库

    注:这里的urlos4为命名空间,registry.cn-shanghai.aliyuncs.com为阿里仓库线路的域名,请根据自己实际的替换

添加镜像到URLOS

  1. 登录URLOS, 未安装URLOS的,请参考官方教程

  2. 选择镜像管理 ,点击页面右上角添加按钮:

    image-20200414115750841

    1. registry.cn-shanghai.aliyuncs.com/urlos4/svnserver:latest-alpine3.9

    注:这里的urlos4为命名空间,registry.cn-shanghai.aliyuncs.com为阿里仓库线路的域名,请根据自己实际的替换

    image-20200408152153893

    image-20200414120036297

    填写镜像大小,执行以下命令可查看本地仓库中显示的镜像大小

    1. docker images

    配置填写后,点击提交,保存到URLOS。

基于添加的镜像创建svnserver应用

  1. 添加应用 配置如下: image-20200414120727382

    image-20200414134128604

    image-20200414134149436

    image-20200414134202694

    image-20200414134220593

    image-20200414134237556

    脚本设置:

    image-20200414134251625

    1. # 安装脚本
    2. test -d /data/svn || mkdir -p /data/svn;
    3. if [ ! -d /data/svn/project ]; then
    4. cd /data/svn
    5. svnadmin create project && chmod -R 777 project
    6. fi
    7. # 启动脚本
    8. /usr/sbin/sshd
    9. svnserve -d -r /data/svn
    10. # 状态脚本
    11. status1=0 && (ps -ef|grep "/usr/sbin/sshd"|grep -v "grep") && status1=1;
    12. status2=0 && (ps -ef|grep "svnserve"|grep -v "grep") && status2=1;
    13. if [ ${status1} != 0 ] && [ ${status2} != 0 ]; then
    14. statusScriptResult=1
    15. fi
    16. # 监控脚本
    17. {w:statusScript:w}
    18. [ "$statusScriptResult" != 1 ] && exit 1

    按照上面的配置填写后,点击提交。

  2. 创建svnserver应用的模板 image-20200414135114057

    image-20200414135207445

    分别添加下面3个模版:

    • /data/svn/project/conf/svnserve.conf

    • /data/svn/project/conf/passwd

    • /data/svn/project/conf/authz

  1. 添加**svnserve.conf**模板
  2. ![image-20200414135829160](/projects/urlos-dev-v1.2/e19f661f330530e878c627d62b13b8ec.png)
  3. ![image-20200414135840427](/projects/urlos-dev-v1.2/ccfa95960fe45c00c8c8e118802e484b.png)
  4. 模板内容 :
  5. ```
  6. [general]
  7. anon-access = read
  8. auth-access = write
  9. password-db = passwd
  10. authz-db = authz
  11. #groups-dn=groups
  12. realm = /data/svn/project
  13. #force-username-case = none
  14. #hooks-env = hooks-env
  15. [sasl]
  16. #use-sasl = true
  17. #min-encryption = 0
  18. #max-encryption = 256
  19. ```
  20. 添加**passwd**模板 ![image-20200414140123226](/projects/urlos-dev-v1.2/f9f1f51cc24144793acee62def289b58.png)
  21. ![image-20200414140132093](/projects/urlos-dev-v1.2/1096ba9e0411320576b387321444ca60.png)
  22. 模板内容 :
  23. ```
  24. [users]
  25. admin = admin123
  26. ```
  27. 添加**authz**模板
  28. ![image-20200414140658219](/projects/urlos-dev-v1.2/340abba3acc4052de500d45e3b8a094e.png)
  29. ![image-20200414140709896](/projects/urlos-dev-v1.2/c28c05b5d40668b9b922a7f90b4073f9.png)
  30. 模板内容:
  31. ```
  32. [aliases]
  33. # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
  34. [groups]
  35. # harry_and_sally = harry,sally
  36. # harry_sally_and_joe = harry,sally,&joe
  37. # [/foo/bar]
  38. # harry = rw
  39. # &joe = r
  40. # * =
  41. # [repository:/baz/fuz]
  42. # @harry_and_sally = rw
  43. # * = r
  44. [/]
  45. admin = rw
  46. * = r
  47. ```
  1. 添加svnserver应用的扩展变量 image-20200414140855479

    image-20200414140917182

    分别添加下面2个扩展变量:

    • sshPassword(ssh登录密码)
    • sshCaption(ssh设置提示)

    添加扩展变量sshPassword

    image-20200414141220312

    添加扩展变量sshCaption image-20200414141624209

    这样,svnserver应用创建完成。

安装svnserver应用并测试

  1. 应用管理列表找到刚才新添加的svnserver应用,选择创建服务

    image-20200414141922882

  2. 填写如下:

    image-20200414142105953

    image-20200414142210551

    按照上面的配置填写后,提交部署。

  3. 部署完成后,使用ssh登录工具,检测能否登入容器内部 image-20200414143955627

    使用svn客户端checkout,检测是否可正常使用

    image-20200414144341111