如何在Synology NAS上启动基于Docker的 SVN 服务器?

如何在Synology NAS上启动基于Docker的 SVN 服务器? 目的 在本教程中,我们将引导您了解如何基于 Docker 映像启动 SVN 服务器。我们使用的映像是 marvambass/subversion ,这是一个支持 Apache 安全 SSL 访问的 SVN 服务器映像。 1 我们还使用 iF.SVNAdmin (一个网页 GUI)来管理存储库和用户/群组权限。 注: 请在开始之前安装 Apache。 解决方案 设置目录 在启动基于 Docker的 SVN Server 之前,...

如何在Synology NAS上启动基于Docker的 SVN 服务器?

目的

在本教程中,我们将引导您了解如何基于Docker映像启动 SVN 服务器。我们使用的映像是marvambass/subversion ,这是一个支持 Apache 安全 SSL 访问的 SVN 服务器映像。 1我们还使用iF.SVNAdmin (一个网页 GUI)来管理存储库和用户/群组权限。

注:

  1. 请在开始之前安装 Apache。

解决方案

设置目录

在启动基于Docker的 SVN Server 之前,请确保已设置目录并已完成以下任务:

  1. 在Synology NAS上安装Docker套件并启用SSH服务。
    1.png
  2. 在计算机上安装 PuTTY 或类似工具,并在计算机与 NAS 之间建立连接以运行SSH。
  3. 在Synology NAS上设置符合以下 SVN Server 项目结构的目录。
    1.png
  4. 构建目录包含:

    • dav_svn.conf用于替换marvambass/subversion中的原始配置
    • 用于构建自己的映像的Dockerfile
    • iF.SVNAdmin用于管理新的 SVN 服务器在图像文件中
    • start.sh是启动服务器的脚本
  5. 在此下载iF.SVNAdmin的源代码。
  6. 上述文件的示例代码:

    dav_svn.conf

    <Location /svn/>
    DAV svn
    SVNParentPath /var/local/svn/
    SVNListParentPath on
    AuthzSVNAccessFile /etc/apache2/dav_svn/dav_svn.authz
    Satisfy any
    Require valid-user
    AuthType Basic
    AuthName "Subversion"
    AuthUserFile /etc/apache2/dav_svn/dav_svn.passwd
    </Location>

    Dockerfile

    FROM marvambass/subversion
    MAINTAINER user
    ADD dav_svn.conf /etc/apache2/mods-available/dav_svn.conf
    ADD iF.SVNAdmin/ /var/www/html/svnadmin/
    RUN chmod 777 /var/www/html/svnadmin/data/
    RUN sed -i '/svn-project-creator/c\' /etc/crontab
    RUN sed -i '/svn-backuper/c\' /etc/crontab

    start.sh

    #!/bin/sh
    SVN_ROOT_PATH=/volume1/docker/svn
    REPO_PATH="$SVN_ROOT_PATH"/repos
    DAV_SVN_CONF="$SVN_ROOT_PATH"/dav_svn

    mkdir -p "$REPO_PATH" "$DAV_SVN_CONF"
    touch "$DAV_SVN_CONF"/dav_svn.authz "$DAV_SVN_CONF"/dav_svn.passwd
    chmod 666 "$DAV_SVN_CONF"/dav_svn.authz "$DAV_SVN_CONF"/dav_svn.passwd

    docker run \
    -d \
    -v "$REPO_PATH":/var/local/svn \
    -v "$DAV_SVN_CONF":/etc/apache2/dav_svn/ \
    -p 40080:80 \
    -p 40443:443 \
    --name my_svn svn-server

修改Docker映像 marvambass/subversion

如果要修改Docker映像,可以尝试以下方法来修改dav_svn.confDockerfile的框架。

  • dav_svn.conf
    这是用于 SVN 配置的文件。我们使用 AuthType Basic来验证用户帐户。如果要在原始映像中使用 AuthType Digest,请单击服务器配置以了解更多详细信息。
  • Dockerfile
    Docker可以通过从Dockerfile读取指令来自动构建 SVN 映像。如果您要自定义配置,请进入GitHub以了解更多详细信息。

基于 marvambass/subversion 构建您自己的Docker映像

修改之后,键入以下脚本来构建您自己的 SVN 映像。

cd build
docker build -t svn-server .

这会构建一个名为svn-server的Docker映像,您可以通过键入dockerimages来查看它。

启动并设置 SVN Server

键入bash start.sh以运行脚本1 。容器开始运行后,您可通过以下 URL 访问iF.SVNAdmin 2

http://your_nas_ip:40080/svnadmin/
https://your_nas_ip:40443/svnadmin/

如果您是初次使用 SVN 服务器,则需要设置iF.SVNAdmin 。请根据下图配置设置。 3

1.png

注:

  1. start.sh是一个简单的脚本,用于设置和启动名为my_svn的 SVN 服务器容器。
  2. iF.SVNAdmin也支持LDAP验证。要了解更多信息,请单击服务器配置。
  3. 您还可以在路径/var/www/html/svnadmin/data/config.ini中更改容器的设置。要了解更多信息,请进入iF.SVNAdmin 。您还可以通过基于网页的 GUI 添加、删除或列出存储库、用户和权限。

将存储库迁移到基于 Docker 的 SVN 服务器

请按照下列步骤将套件中心的SVN Server存储库移转至基于 Docker 的 SVN Server。 SVN Server中的每个存储库都有自己的密码和验证文件。但是,密码和验证文件不会迁移,因为基于 Docker 的 SVN Server 映像的默认设置具有全局密码和验证文件。

  1. 进入 NAS 上的SVN Server并找到存储库。例如,在本教程中,repo1 是存储库,在 Tortoise SVN 中有两个 repo1 修订(可通过 SVN 客户端找到修订历史的信息)。
    1.png

    1.png
  2. 通过基于网页的 GUI 添加新的存储库repo1_on_docker
    1.png
  3. 通过SSH登录到Synology NAS ,并运行以下命令以找到 SVN 服务器的CONTAINER ID
  4. docker ps
  5. 使用以下CONTAINER ID访问容器:
  6. docker exec -it CONTAINER ID bash
  7. 将旧版 SVN 服务器上的存储库导出到容器中的文件:
  8. svnrdump dump --username aaa svn://nas_ip/repo1 > /var/tmp/ori.dump
  9. 将文件导入到新的存储库repo1_on_docker
  10. svnadmin load --force-uuid /var/local/svn/repo1_on_docker/ < /var/tmp/ori.dump
  11. 存储库可通过以下 URL 访问:
  12. http://your_nas_ip:40080/svn/repo1_on_docker/
    https://your_nas_ip:40443/svn/repo1_on_docker/

SVN 客户端将在重定位之前自动检查新旧存储库的 UUID。请使用相同的 UUID 并添加–force-uuid以防启动失败。

Loading…
synology常见问题

如何修复 Active Backup for Business 错误代码 0x80042308?

2023-1-22 0:56:18

synology常见问题

当我尝试连接到 Synology Router 的无线网络时,收到错误消息“Windows 无法从路由器获取网络设置”。我该怎么办?

2023-1-22 17:30:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索