我是Ubuntu的新手,但我有一份工作要用docker安装Wiki.JS。它工作正常,服务器正在运行,但由于某种原因,它无法访问GraphQL API。
我遇到了以下问题:
服务器:
2020-06- 14 T11:43:53.980Z [MASTER]错误:从Graph端点获取最新更新:[失败]
2020-06- 14 T11:43:53.980Z [MASTER]错误:请求https://graph.requarks.io失败,原因:连接ETIMEDOUT104.26.14.122:443
2020-06- 14 T11:43:56.028Z [MASTER]错误:正在将区域设置与Graph端点同步:[失败]
2020-06- 14 T11:43:56.028Z [MASTER]错误:请求https://graph.requarks.io失败,原因:连接ETIMEDOUT104.26.15.122:443
客户:
错误:GraphQL错误:区域设置或命名空间无效
堆栈跟踪:
n@http://server.mydomain.test/_assets/js/app.js?1591384357:2:125092
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.queryListenerForObserver/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:146832
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.broadcastQueries/</<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:153007
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.broadcastQueries/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:152971
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.broadcastQueries@http://server.mydomain.test/_assets/js/app.js?1591384357:2:152920
["./node_modules/apollo-client/bundle.umd.js"]/i/k</e.prototype.fetchRequest/</b<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:154884
["./node_modules/zen-observable/lib/Observable.js"]/j</<.value/</<.next@http://server.mydomain.test/_assets/js/app.js?1591384357:333:17099
b@http://server.mydomain.test/_assets/js/app.js?1591384357:333:14921
y@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15429
["./node_modules/zen-observable/lib/Observable.js"]/w</<.value@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15982
w/</n<.next/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:140468
w/</n<.next@http://server.mydomain.test/_assets/js/app.js?1591384357:2:140430
b@http://server.mydomain.test/_assets/js/app.js?1591384357:333:14921
y@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15429
["./node_modules/zen-observable/lib/Observable.js"]/w</<.value@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15982
o/</</r<.next@http://server.mydomain.test/_assets/js/app.js?1591384357:2:169810
b@http://server.mydomain.test/_assets/js/app.js?1591384357:333:14921
y@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15429
["./node_modules/zen-observable/lib/Observable.js"]/w</<.value@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15982
["./node_modules/apollo-link-batch/lib/batching.js"]/o</e.prototype.consumeQueue/<.next/</<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:168733
["./node_modules/apollo-link-batch/lib/batching.js"]/o</e.prototype.consumeQueue/<.next/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:168700
["./node_modules/apollo-link-batch/lib/batching.js"]/o</e.prototype.consumeQueue/<.next@http://server.mydomain.test/_assets/js/app.js?1591384357:2:168669
b@http://server.mydomain.test/_assets/js/app.js?1591384357:333:14921
y@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15429
["./node_modules/zen-observable/lib/Observable.js"]/w</<.value@http://server.mydomain.test/_assets/js/app.js?1591384357:333:15982
t/n.batcher<.batchHandler/</<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:165472
["./node_modules/core-js/modules/es.promise.js"]/J/<@http://server.mydomain.test/_assets/js/app.js?1591384357:2:450433
["./node_modules/core-js/internals/microtask.js"]/i@http://server.mydomain.test/_assets/js/app.js?1591384357:2:412213
请记住,我之前在Windows和我的同事在Linux上测试过它。只要虚拟机没有代理,两者都可以工作..我试图为机器设置代理并设置环境变量,但它似乎仍然不起作用。
我该怎么解决这个问题?
3条答案
按热度按时间neskvpey1#
要解释**@GanjalfTheGreen**提供的 Docker 的sideloaing解决方案,首先需要克隆Wiki.js localization repository(或从该存储库下载选定的本地化;只需确保您在所选项目旁边有
locales.json
和en.json
)。然后您需要将包含本地化文件的文件夹绑定到容器内的/wiki/data/sideload
目录。你还需要在
config.yml
文件中设置offline
参数,让wiki.js知道它应该使用侧加载的本地化文件。为此,你需要在主机中创建一个config.yml
文件,并将其绑定到容器配置文件。下面是一个例子:
docker-compose.json
config.yml
h43kikqp2#
您无法让Wiki.JS在企业防火墙后工作的原因是此功能未实现。
基于this GitHub issue,您可以投票支持此功能here。
问题中提到了一个解决方法(1.),但您也可以sideload丢失的文件(2.)。
1. Workaround
我想出了一个解决办法:使用https://github.com/rofl0r/proxychains-ng和LD_PRELOAD。在我的例子中,我使用docker-compose。
您必须:
下面是一个例子:
docker-compose.yaml
2. Sideload
如果您的wiki安装在与互联网隔离的环境中,您可以从互联网上下载通常会下载的数据。
这是通过手动下载一组文件并将其放置在wiki安装中的特定目录中来实现的。这些文件将在初始化期间导入。
在Wiki.js安装文件夹中的路径data/sideload创建一个新文件夹。例如,如果您的wiki安装在路径/home/wiki,则需要在路径/home/wiki/data/sideload创建一个文件夹
区域设置为了安装区域设置包,您需要主区域设置文件+至少一个区域设置包文件。
1 -主文件
主文件locales.json包含有关所有可用语言的信息,并且是安装任何语言环境所必需的。
将此文件放入先前创建的sideload文件夹中。
2 -区域设置包
locale包文件xx.json或xx-zz.json包含您选择的语言的所有翻译。您可以同时侧载任何数量的locale。
将文件放在之前创建的sideload文件夹中,与主文件放在一起。现在,您的文件夹中应该有locales.json,en.json和任何其他语言。
3 -侧载
运行Wiki.js(如果已经运行,则重新启动该进程)以自动侧载data/sideload文件夹中的文件。
作为一种解决方法,一旦Wiki.js完全启动,重新启动服务器。语言环境数据(现在在数据库中)将被正确加载。我遇到了同样的问题,只要这个功能还没有实现,我将使用BlueSpice MediaWiki,因为Wiki.JS在其路线图上有“从MediaWiki导入”。
kninwzqo3#
我如何解决这个问题
我在离线环境中侧载数据时也遇到了同样的问题。为了解决这个问题,我不得不从https://github.com/Requarks/wiki-localization下载(通过zip)所有的locale,而不仅仅是en.json和locale.json文件。然后将其带到我的离线服务器,并将其添加到我的sideload-data文件夹中,我的docker-compose就在那里。此外,我还必须将config.yml参数设置为离线:真的。
Docker compose
故障提示: