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/处的非根路径进行访问。
此解决方案适用于遇到以下问题的人: