注意:本文的例子是在windows2019下操作的,並經過確認。
docker的安裝
1 安裝docker,首先開啟硬件bios虛擬項,安裝hy wsl(windows子系統)。
2 安裝docker desktop
3 docker desktop 容器引擎選擇linux。
容器鏡像的安裝
1 portainerUI 的安裝 ,使用portainer來管理容器
docker run -d --name portainerUI -p 9090:9000 --restart=always -v \\.\pipe\docker_engine:\\.\pipe\docker_engine portainer/portainer
docker run -d --name portainerUI -p 9090:9000 -v "/var/run/docker.sock:/var/run/docker.sock" portainer/portainer #linux系統
2 創建網絡
在portainerUI中,創建名為mynet的網絡,類型為bridge。網關為 172.20.10.11 ,子網掩碼 172.20.0.0/16 ,范圍內172.20.10.28/25 。
具體可根據實際情況設置。
3 安裝redis redis的服務器地址為172.20.10.9 ,也可以根據容器名訪問。 ping 容器名和ip試試。
docker run --name some-redis --restart=always --net mynet --ip 172.20.10.9 -d redis
4 安裝rabbitmq 地址為172.20.10.8
docker run --name some-rabbitmq --restart=always --net mynet --ip 172.20.10.8 -d rabbitmq
5 安裝postgresql 地址為172.20.10.1
docker run --name some-postgres --restart=always -p 5432:5432 --net mynet --ip 172.20.10.1 -e POSTGRES_PASSWORD=mypassword -d postgres
登錄數據庫
CREATE DATABASE onlyoffice #創建數據庫
CREATE USER onlyoffice WITH password 'onlyoffice' #創建賬號
GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice #設置賬號和數據庫的關聯權限
6 安裝 onlyoffice 選擇合適的鏡像 alehoho/oo-ce-docker-license
docker run --name=onlyoffice --restart=always --detach --publish=8033:80 --net mynet --ip 172.20.10.5 -e LANGUAGE=zh_CN:zh -e JWT_ENABLED=true -e JWT_IN_BODY=true -e JWT_SECRET=secret -e DB_TYPE=postgres -e DB_HOST=172.20.10.1 -e DB_PORT=5432 -e DB_NAME=onlyoffice -e DB_USER=onlyoffice -e DB_PWD=onlyoffice -e AMQP_URI=amqp://guest:guest@172.20.10.8:5672 -e REDIS_SERVER_HOST=172.20.10.9 -e REDIS_SERVER_PORT=6379 alehoho/oo-ce-docker-license
特別要注意的是:-e JWT_SECRET=secret 這個是秘鑰,不要暴露給別人知道。 變量的配置文件在容器中的位置/etc/onlyoffice/documentserver/local.json
這個秘鑰的值,要和實例代碼配置中的值對應。 如果不設置jwt的驗證功能(環境變量 JWT_ENABLED JWT_IN_BODY JWT_SECRET 都不設,且代碼settings.config文件中的files.docservice.secret為空)則不進行身份驗證
7 c#的實例代碼 https://files.cnblogs.com/files/wang2650/onlyofficeNet.zip 。其他語言的可以去官網去找。
需要注意的是,實例(包括官網2020年12月的例子),都有個問題:在文檔編輯頁面,點擊文件-版本歷史 的時候,會報錯。網上的文章說要在代碼的gethistrory中加token ,還要加跨域。最后我也沒試成功,參考文章 https://segmentfault.com/a/1190000038221508 。
版本歷史的那個功能,直接隱藏。 有知道的,可以告訴我下,留言私信都可以,謝謝。