注意:本文的例子是在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 \.pipedocker_engine:\.pipedocker_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 。
版本历史的那个功能,直接隐藏。 有知道的,可以告诉我下,留言私信都可以,谢谢。