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服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM