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服務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章