威聯通折騰篇十八:Gogs Docker 容器備份及恢復
年前我的 NAS系統盤掛掉,數據倒是沒丟,但讓我的很多配置都要重來。
已經總結了:
剩下的其他就是應用數據的恢復和備份了。這裏再總結一下 Gogs 數據的備份和恢復。
之前使用的是 Qnap club 上面 qpkg 文件來安裝的 Gogs, 這次遷移到 Docker 中。
Gogs 的主要數據和其他很多應用類似,主要是數據庫和本地配置文件。
數據庫備份
關於 MySQL 數據庫的備份就不再多說了,之前也有總結過文章。
本地數據
使用 qpkg 文件安裝的 QNAP 應用都會將數據存儲在 /share/CACHEDEV1_DATA/.qpkg/
目錄下,找到該目錄下的 /share/CACHEDEV1_DATA/.qpkg/Gogs/
文件夾,如果不知道要備份該目錄下的哪一個文件,笨辦法就是把整個目錄打包備份。
不過如果簡單的查看一下 Gogs 的 Docker 鏡像使用 就知道
# Pull image from Docker Hub. $ docker pull gogs/gogs # Create local directory for volume. $ mkdir -p /var/gogs # Use `docker run` for the first time. $ docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs # Use `docker start` if you have stopped it. $ docker start gogs
在 Gogs 的 Docker 鏡像中 Gogs 只掛載了 /data
目錄,所有的數據都保存在該目錄中。
/var/gogs |-- git | |-- gogs-repositories |-- ssh | |-- # ssh public/private keys for Gogs |-- gogs |-- conf |-- data |-- log
觀察該目錄,就能看到主要是三個目錄,結構一目瞭然。但是 QNAP 應用中結構就不那麼清晰了。
/git/gogs-repositories
目錄對應着 /home/gogs-repositories
目錄,裏面保存着所有 git 倉庫文件。等啓動 Docker 容器後,可以將該目錄中的文件全部拷貝到 Docker 容器掛載的目錄,比如我就是 /share/gogs/git
目錄。
拷貝後可能還有權限問題,使用 chown user:group -R *
來解決一下(這裏的 user group 要換成你係統中對應的)。
另外注意 /gogs/conf/
目錄下的配置文件,這是一個全局的配置,非常重要。
ERROR
Docker 啓動過程中可能遇到如下錯誤:
error: kex_exchange_identification: client sent invalid protocol identifier
初步判斷就是 Docker 端口配置錯誤,我之前配置 的 Gogs 服務,監聽的兩個端口分別是 10080 和 10022,所以在 Container Station 中配置的時候改一下即可。
External
Gitea 是一個 Gogs 的社區 fork,看 對比 是一個 Gogs 極好的代替品。