zoukankan      html  css  js  c++  java
  • gogs迁移

    windows->linux

    之前gogs放在windows server2016中,需要迁移至linux docker中。

    首先拉取gogs镜像

    docker pull gogs/gogs

    然后挂载卷,运行docker容器。

    docker run -p 3000:3000 --name gogs -v /mnt/gogs/data/:/data/gogs/data -v /mnt/gogs/cert/:/app/gogs/cert -v /mnt/gogs/public/:/app/gogs/public -v /mnt/gogs/scripts/:/app/gogs/scripts -v /mnt/gogs-repositories:/app/gogs/repositories -v /mnt/gogs/custom/conf/:/data/gogs/conf -d gogs/gogs

     其中/mnt/gogs目录是原windows server中放置gogs的磁盘目录,换为linux后挂载到了/mnt下。可替换为自己的gogs目录所在路径

    挂载进docker 的目录只需要data public scripts custom/conf 和 仓库所在目录repositories,如果有ssl证书也需要挂载进去。

    启动完毕后进入docker容器中修改配置文件

    docker exec -it gogs /bin/bash
    vi /data/gogs/conf/app.ini

    批量替换所有仓库的配置路径

    定位到仓库所在根目录。

    find 查找update pre-receive和post-receive文件, sed替换掉gogs可执行程序和配置文件路径,替换格式为s#old#new#g,   old 和new是原字符串和新字符串,有特殊符号需要加\进行取消转义

    替换gogs所在路径

    find . -type f \( -name "update" -o -name "pre-receive" -o -name "post-receive" \) -exec sed -i s#D:\/gogs\/gogs\/gogs.exe#\/app\/gogs\/gogs#g {} \;

    替换配置文件所在路径

    find . -type f \( -name "update" -o -name "pre-receive" -o -name "post-receive" \) -exec sed -i s#D:\/gogs\/gogs\/custom\/conf\/app.ini#\\/data\/gogs\/conf\/app.ini#g {} \;

    其中 D:\/gogs\/gogs\/gogs.exe 是gogs可执行程序在源本windows中的路径,/都加了\来取消转义。 即D:/gogs/gogs/gogs.exe

    \/app\/gogs\/gogs 是gogs在docker目录中的路径,即 /app/gogs/gogs

    修改完毕后执行./gogs web启动即可,然后就可以关掉终端接着访问gogs了。无缝迁移,完美。

    PS: 从一台windows服务器迁移到另一台windows服务器也大同小异,

    1. 备份gogs目录和仓库目录,备份还原gogs数据库
    2. 修改配置文件中的各种目录路径
    3. 修改每个仓库中hooks目录下的update pre-receive和post-receive文件中关于gogs路径和配置文件路径
    4. 重启gogs服务
  • 相关阅读:
    c++ bitset 10进制转二进制
    PIVOT
    西渡
    check all tables rows

    View Triggers Function Procedure
    ORA-01400: cannot insert NULL into
    中东
    力的合成
    正弦、余弦和正切
  • 原文地址:https://www.cnblogs.com/turingguo/p/10373793.html
Copyright © 2011-2022 走看看