CouchDB与Fauxton捆绑在一起,该版本具有一个严重的错误,如果CouchDB托管在非根目录位置,则该错误会阻止Fauxton正常工作。因此,如果要将CouchDB托管在/couchdb
,则捆绑的Fauxton会在/couchdb/_utils
尝试访问根目录/
而不是位置/couchdb
的CouchDB,从而导致Fauxton功能中断。
此问题由GitHub上的以下问题进行了详细说明:
是否有可能使用Nginx作为反向代理在非根目录下将Fouchton托管在Fouchton上,如何实现?
对我有用的方法是让Nginx将/couchdb/_utils/
位置代理到运行在Docker容器中的独立NPM版本的Fauxton。因此,捆绑的CouchDB Fauxton不满足对/_utils
的所有请求,而是独立的Fauxton服务器(具有有关子路径托管的相关修补程序)无法满足。
以下是完成这项工作所需步骤的一些提示。
[/etc/nginx/conf.d/default.conf
处的NGINX配置:
upstream couchdb { server app-couchdb:5984; } upstream fauxton { server app-fauxton:8000; } server { listen 80; server_name localhost; location /couchdb/_utils/ { rewrite /couchdb/_utils/(.*) /$1 break; proxy_pass http://fauxton/; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /couchdb { rewrite /couchdb/(.*) /$1 break; proxy_pass http://couchdb/; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ... }
/opt/couchdb/etc/local.d/docker-1.ini
处的CouchDB配置:
[chttpd] bind_address = 0.0.0.0 [httpd] enable_cors = true bind_address = 0.0.0.0
[fauxton:alpine图像的Dockerfile,位于
fauxton.dockerfile
:
FROM node:10-alpine RUN npm install --silent -g fauxton
Docker配置:
sudo docker build -t fauxton:alpine - < ./fauxton.dockerfile sudo docker network create app-net sudo docker create --name app-couchdb --network app-net --restart unless-stopped -v /opt/couchdb/etc/local.d/docker-1.ini:/opt/couchdb/etc/local.d/docker-1.ini -e COUCHDB_USER="$ADMIN_USER" -e COUCHDB_PASSWORD="$ADMIN_PASSWORD" couchdb:latest sudo docker create --name app-fauxton --network app-net --restart unless-stopped fauxton:alpine fauxton --couchdb "http://app-couchdb:5984" sudo docker create --name app-nginx --network app-net --restart unless-stopped --publish 8080:80 -v /etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro nginx:alpine sudo docker start app-couchdb sudo docker start app-fauxton sudo docker start app-nginx
这应该或多或少为您提供最新版本的CouchDB和最新版本的独立Fauxton的设置,它们都在Docker容器中运行,并且可以通过http://127.0.0.1:8080/couchdb/_utils/处的非根路径进行访问。
此解决方案适用于遇到以下问题的人: