Docker中运行CouchDB 2.1报错:未自动创建3个系统数据库
解决Docker中CouchDB 2.1系统数据库未自动创建的问题
我之前维护旧项目时碰到过一模一样的CouchDB 2.1 Docker部署问题——本该自动生成的_users、_replicator、_global_changes三个系统库没创建,报错栈和你完全一致。给你几个亲测有效的解决步骤:
检查启动环境变量配置
CouchDB 2.1有个容易踩的坑:如果启动容器时没设置COUCHDB_USER和COUCHDB_PASSWORD环境变量,它大概率会跳过系统数据库的初始化流程。正确的启动命令应该是这样的:docker run -d -p 5984:5984 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=your-secure-pass couchdb:2.1要是你之前没加这两个变量,删掉旧容器重新启动试试。
排查数据卷权限问题
如果你挂载了本地目录到容器的/opt/couchdb/data,那本地目录的权限必须匹配容器内的couchdb用户(UID为5984)。权限不对的话,CouchDB连数据都写不了,更别说创建系统库了。执行下面的命令修复权限:sudo chown -R 5984:5984 /path/to/your/local/data-folder改完权限后重启容器。
手动创建系统数据库
如果上面两步都没用,直接手动创建这三个库就行。先进入容器:docker exec -it <your-couchdb-container-name> /bin/bash然后用
curl调用API创建:# 替换admin和your-secure-pass为你的实际账号密码 curl -X PUT http://admin:your-secure-pass@localhost:5984/_users curl -X PUT http://admin:your-secure-pass@localhost:5984/_replicator curl -X PUT http://admin:your-secure-pass@localhost:5984/_global_changes要是你没设置账号密码,去掉URL里的
admin:your-secure-pass@部分就行,但生产环境强烈建议设置密码。查看日志找深层问题
要是还解决不了,看看容器日志里的细节:docker logs <your-couchdb-container-name>日志里可能会有更具体的报错,比如提示某个文件无法写入,或者节点配置异常,顺着这些信息排查就能找到根因。
另外提一句,CouchDB 2.1确实比较老了,有不少已知的初始化bug,如果项目允许的话,升级到2.3.x或者3.x版本会省心很多。
内容的提问来源于stack exchange,提问作者Debut Infotech
相关产品推荐
相关产品推荐

