快乐404
发布于 2025-03-08 / 36 阅读
0
0

Docker环境安装可道云,部署onlyoffice实现在线编辑

一、安装可道云

首先创建一个目录作为项目目录,后面所有命令都在这个目录下执行

  • mkdir /kodbox && cd /kodbox

  • 需在db.env中设置数据库密码,还有yml中的MYSQL_ROOT_PASSWORD需补充.

创建文件来设置数据库环境变量vim db.env

MYSQL_PASSWORD=
MYSQL_DATABASE=kodbox
MYSQL_USER=kodbox

创建 compose.yml 文件,在其中配置映射端口、持久化目录

$ vim compose.yml

阿里云容器镜像地址

services:
  db:
    image: registry.cn-hangzhou.aliyuncs.com/kodcloud/mariadb:10.6
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - "./db:/var/lib/mysql"       #./db是数据库持久化目录,可以修改
      # - "./etc/mysql/conf.d:/etc/mysql/conf.d"       #增加自定义mysql配置
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MARIADB_AUTO_UPGRADE=1
      - MARIADB_DISABLE_UPGRADE_BACKUP=1
    env_file:
      - db.env
      
  app:
    image: registry.cn-hangzhou.aliyuncs.com/kodcloud/kodbox
    restart: always
    ports:
      - 80:80                       #左边80是使用端口,可以修改
    volumes:
      - "文件路径/site:/var/www/html"      #./site是站点目录位置,要修改
      - "文件路径/mydoc:/var/www/mydoc"      #./mydoc是站点目录位置,要修改 ,/var/www/mydoc是容器内文件夹,要给权限。
    environment:
      - MYSQL_HOST=db
      - REDIS_HOST=redis
    env_file:
      - db.env
    depends_on:
      - db
      - redis

  redis:
    image: registry.cn-hangzhou.aliyuncs.com/kodcloud/redis:alpine
    restart: always

二、增加使用onlyoffice在线编辑

services:
  db:
    image: registry.cn-hangzhou.aliyuncs.com/kodcloud/mariadb:10.6
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - "/home/docker/kodbox/db:/var/lib/mysql"       #./db是数据库持久化目录,可以修改
      # - "./etc/mysql/conf.d:/etc/mysql/conf.d"       #增加自定义mysql配置
    environment:
      - MYSQL_ROOT_PASSWORD=chenfeng1554
      - MARIADB_AUTO_UPGRADE=1
      - MARIADB_DISABLE_UPGRADE_BACKUP=1
    env_file:
      - db.env
      
  app:
    image: registry.cn-hangzhou.aliyuncs.com/kodcloud/kodbox
    restart: always
    ports:
      - 5566:80                       #左边80是使用端口,可以修改
    volumes:
      - "/home/docker/kodbox/site:/var/www/html"      #./site是站点目录位置,可以修改
      - "/Volume2/mydoc/:/var/www/mydoc"
    environment:
      - MYSQL_HOST=db
      - REDIS_HOST=redis
    env_file:
      - db.env
    depends_on:
      - db
      - redis

  redis:
    image: registry.cn-hangzhou.aliyuncs.com/kodcloud/redis:alpine
    restart: always

  office:
    image: documentserver:8.2.2  #这个镜像要自己去找,社区版本有功能限制,建议直接装解锁版
    restart: always
    ports:
      - 8001:80
    environment:
      - PRODUCTION_EDITION=true
      - REDIS_ENABLED=false
      - JWT_ENABLED=false  #这个环境变量要配置。不然会报错
      - REDIS_SERVER_HOST=localhost

- JWT_ENABLED=false #这个环境变量要配置。不然onlyoffice会提示安全文档安全令牌的格式不正确请与您的文档服务器管理员联系

进入项目目录,执行docker compose up -d启动命令,会自动拉取容器并运行。

三、挂载的本地目录无法读取解决办法

这时候可以进入可道云后台,但是发现挂载的目录无法读取,是因为没有权限读取’“/var/www/mydoc”,这时候进入容器

docker exec -it [容器名] bash
chown -R nginx:nginx /var/www/mydoc

再次进去可道云,即可读写文件。更改默认存储即可。

四、如何配置 https 访问

  • 若全站采用 https 访问 office,需要配置 nginx 反向代理来实现 https 转 http,可以参考官方安装手册:https://docs.kodcloud.com/setup/office/。这个方法比较复杂。

  • 还有一种比较笨的方法,直接使用反向代理,将onlyoffice代理成https访问。因为我的反向代理和onlyoffice不在一个IP上所以反代起来很方便。

到了这里,就可以顺利使用了。

五、olnyOffice插件中删除字体

先要进入容器删除onlyoffice原有字体,注意:如果只是添加字体,且想使用原有字体的话那么就不用删除原有字体

# 进入容器
sudo docker exec -it onlyoffice bash 
# 进入容器后执行
cd /usr/share/fonts/
rm -rf *
cd /var/www/onlyoffice/documentserver/core-fonts/
rm -rf *

六、olnyOffice插件中添加中文字体

1.只需要下载自己需要的字体放入/usr/share/fonts/truetype/custom文件夹。如果没有权限直接进入文件夹

cd app/onlyoffice/front  #字体临时存放的文件夹
docker cp 方正黑体简体.TTF onlyoffice:/usr/share/fonts/truetype/custom  #要把字体从临时文件夹拷贝到custom文件夹

2.重新进入onlyoffice容器中,执行/usr/bin/documentserver-generate-allfonts.sh命令生成onlyoffice可用字体。

提示:

$ usr/bin/documentserver-generate-allfonts.sh
Generating AllFonts.js, please wait...Done
Generating presentation themes, please wait...Done
ds:docservice: stopped
ds:docservice: started
ds:converter: stopped
ds:converter: started

重启onlyoffice容器,发现新增字体已经可用了。


评论