公司使用onlyoffice进行文档展示,直接使用docker拉取onlyoffice启动完全正常。

当我们迁移服务的时候,想着用docker export可以小导出一些文件,当直接用docker import后,执行run 命令发现启动不了onlyoffice。 查看日志发现postgresql启动不了,错误信息如下。


/etc/postgresql//main/pg_hba.conf
/etc/postgresql//main/postgresql.conf
/usr/lib/postgresql/12/bin/pg_ctl

/app/ds/run-document-server.sh: line 551: [: !=: unary operator expected

/usr/lib/postgresql/12/bin/pg_ctl /usr/lib/postgresql/12/bin/pg_ctl start -D /var/lib/postgresql/12/main -l /var/log/postgresql/postgresql-12-main.log -s -o  -c config_file="/etc/postgresql/12/main/postgresql.conf"  exited with status 1: 

分析:

从错误信息上来看是路径中间少了一层,然后找/app/ds/run-document-server.sh发现里面的环境变量少值。

解决方案:

1. 从原来的机器上使用命令: docker inspect 容器ID

2. 找到EVN变量并复制出来,如下图

"Env": [
  "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
  "LANG=en_US.UTF-8",
  "LANGUAGE=en_US:en",
   "LC_ALL=en_US.UTF-8",
   "DEBIAN_FRONTEND=noninteractive",
    "PG_VERSION=12",
    "COMPANY_NAME=onlyoffice",
    "PRODUCT_NAME=documentserver"
]

3.在新的服务器上创建一个文件,如onlyoffice_env.txt,按key=value的形式把第2步的变量放进来,如下图:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_ALL=en_US.UTF-8
DEBIAN_FRONTEND=noninteractive
PG_VERSION=12
COMPANY_NAME=onlyoffice
PRODUCT_NAME=documentserver

4.使用下面的命令启动即可正常使用,如下图:

sudo docker run --env-file=onlyoffice_env.txt -i -t -d -p 8097:80 -p 443:443 --restart=always onlyoffice/documentserver /bin/bash /app/ds/run-document-server.sh

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐