關(guān)于
Docker 是一個(gè)可以打包應(yīng)用以及依賴包到一個(gè)可移植的容器中,以更輕量的方式運(yùn)行Linux應(yīng)用程序, 這比傳統(tǒng)的虛擬機(jī)要更快.
Docker 可以讓您在服務(wù)器上更輕松的部署以及更新 Seafile服務(wù).
在鏡像中會(huì)使用 Seafile 團(tuán)隊(duì)推薦的配置作為默認(rèn)配置.
如果您并不熟悉 Docker 的命令,請(qǐng)參考docker文檔.
注意:本文檔僅包含了在 docker 下部署 Seafile 開(kāi)源版的方法,如果您想要在 docker 下部署 Seafile 專業(yè)版,請(qǐng)參考用 Docker 部署 Seafile-Pro 服務(wù)
快速開(kāi)始
運(yùn)行 Seafile 服務(wù)容器:
docker run -d --name seafile -e SEAFILE_SERVER_HOSTNAME=seafile. -v /opt/seafile-data:/shared -p 80:80 seafileltd/seafile:latest
第一次運(yùn)行會(huì)進(jìn)行初始化,等待幾分鐘然后通過(guò)訪問(wèn)http://seafile. 查看 Seafile 的Web界面.
這條命令會(huì)將宿主機(jī)上的/opt/seafile-data 目錄掛載到 Seafile 容器中,你可以在這里找到日志或其他的數(shù)據(jù)文件.
更多配置選項(xiàng)
自定義管理員用戶名和密碼
默認(rèn)的管理員賬號(hào)以及密碼分別為me@ ,asecret .你可以通過(guò)設(shè)置容器的環(huán)境變量來(lái)改變初始化時(shí)生成的管理員的賬號(hào)和密碼.
例如:
docker run -d --name seafile -e SEAFILE_SERVER_HOSTNAME=seafile. -e SEAFILE_ADMIN_EMAIL=me@ -e SEAFILE_ADMIN_PASSWORD=a_very_secret_password -v /opt/seafile-data:/shared -p 80:80 seafileltd/seafile:latest
如果您忘記了管理員密碼,你可以添加一個(gè)新的管理員賬號(hào),然后通過(guò)這個(gè)新的管理員賬號(hào)重置之前的管理員密碼.
向Let's encrypt申請(qǐng)SSL證書(shū)
如果您設(shè)置SEAFILE_SERVER_LETSENCRYPT 為true , 那么容器會(huì)自動(dòng)根據(jù)設(shè)置的主機(jī)名向Let's encrypt申請(qǐng)SSL證書(shū)
例如:
docker run -d --name seafile -e SEAFILE_SERVER_LETSENCRYPT=true -e SEAFILE_SERVER_HOSTNAME=seafile. -e SEAFILE_ADMIN_EMAIL=me@ -e SEAFILE_ADMIN_PASSWORD=a_very_secret_password -v /opt/seafile-data:/shared -p 80:80 -p 443:443 seafileltd/seafile:latest
如果你想使用已經(jīng)擁有的SSL證書(shū):
- 創(chuàng)建
/opt/seafile-data/ssl 目錄, 并將你的證書(shū)以及私鑰放入這個(gè)目錄中.
- 假設(shè)您的網(wǎng)站名稱為
seafile. , 那么您的證書(shū)名稱必須為seafile..crt ,而且您的私鑰名稱必須為seafile..key
修改 Seafile 服務(wù)的配置
Seafile 服務(wù)的配置會(huì)存放在/shared/seafile/conf 目錄下,你可以根據(jù) Seafile 手冊(cè)修改配置
修改之后需要重啟容器.
docker restart seafile
查詢?nèi)罩?/h4>
Seafile 服務(wù)的日志會(huì)存放在/shared/logs/seafile 目錄下, 由于是將/opt/seafile-data 掛載到/shared ,所以同樣可以在宿主機(jī)上的/opt/seafile-data/logs/seafile 目錄下找到.
系統(tǒng)日志會(huì)存放在/shared/logs/var-log 目錄下.
添加新的管理員
確保您的容器正在運(yùn)行,然后輸入以下命令:
docker exec -it seafile /opt/seafile/seafile-server-latest/reset-admin.sh
然后根據(jù)提示輸入用戶名以及密碼即可
目錄結(jié)構(gòu)
/shared
共享卷的掛載點(diǎn),您可以選擇在容器外部存儲(chǔ)某些持久性信息.在這個(gè)項(xiàng)目中,我們會(huì)在外部保存各種日志文件和上傳目錄。 這使您可以輕松重建容器而不會(huì)丟失重要信息。
- /shared/db: mysql服務(wù)的數(shù)據(jù)目錄
- /shared/seafile: Seafile 服務(wù)的配置文件以及數(shù)據(jù)文件
- /shared/logs: 日志目錄
- /shared/logs/var-log: 我們將容器內(nèi)的
/var/log 掛載到本目錄.您可以在shared/logs/var-log/nginx/ 中找到nginx的日志文件
- /shared/logs/seafile: Seafile 服務(wù)運(yùn)行產(chǎn)生的日志文件目錄.比如您可以在
shared/logs/seafile/seafile.log 文件中看到seaf-server的日志
- /shared/ssl: 存放證書(shū)的目錄,默認(rèn)不存在
升級(jí) Seafile 服務(wù)
升級(jí)到 Seafile 服務(wù)的最新版本:
docker pull seafileltd/seafile:latest
docker rm -f seafile
docker run -d --name seafile -e SEAFILE_SERVER_LETSENCRYPT=true -e SEAFILE_SERVER_HOSTNAME=seafile. -e SEAFILE_ADMIN_EMAIL=me@ -e SEAFILE_ADMIN_PASSWORD=a_very_secret_password -v /opt/seafile-data:/shared -p 80:80 -p 443:443 seafileltd/seafile:latest
如果您是使用launcher 腳本的最先一批用戶,您應(yīng)該參考從舊的結(jié)構(gòu)升級(jí).
垃圾回收
在 seafile 中,當(dāng)文件被刪除時(shí),組成這些文件的塊數(shù)據(jù)不會(huì)立即刪除,因?yàn)榭赡苡衅渌募矔?huì)引用這些塊數(shù)據(jù)(用于去重功能的實(shí)現(xiàn))。為了真正刪除無(wú)用的塊數(shù)據(jù),還需要額外運(yùn)行"GC"程序。GC 會(huì)自動(dòng)檢測(cè)到哪些數(shù)據(jù)塊不再被任何文件所引用,并清除它們。
GC 腳本被放在docker容器的 /scripts 目錄下。執(zhí)行 GC 的方法很簡(jiǎn)單:docker exec seafile /scripts/gc.sh 。對(duì)于社區(qū)版來(lái)說(shuō),該程序會(huì)暫停 Seafile 服務(wù),但這是一個(gè)相對(duì)較快的程序,一旦程序運(yùn)行完成,Seafile 服務(wù)也會(huì)自動(dòng)重新啟動(dòng)。而專業(yè)版提供了在線運(yùn)行 GC 的功能,不會(huì)暫停 Seafile 服務(wù)。
問(wèn)題排查方法
如果你運(yùn)行的過(guò)程中碰到問(wèn)題,可以運(yùn)行"docker logs"、"docker exec"等docker命令來(lái)尋找更多的錯(cuò)誤信息.
docker logs -f seafile
# or
docker exec -it seafile bash
|