Docker + CouchDB持续部署最佳配置

Docker + CouchDB持续部署最佳配置

我最近开始尝试使用 Docker,在代码部署(即节点服务器)方面,它工作得非常好。然而,在部署 CouchDB 服务器时,它带来了挑战。挑战性可能与我对这个主题的无知有关。

当前设置:持续部署到AWS EC2实例
问题:每次部署都会清除数据库并重新安装couchDB
最终目标:部署不应删除并重新安装数据库。如果提供了 Couchdb 配置,则应仅更新该配置(即关闭管理员模式、添加用户等)

Dockerfile:非常简单:FROM couchdb:latest

我可以使用哪些方法来实现这一点?

答案1

您必须使您的数据卷持久化。

1.选项:

将主机目录挂载到容器中

docker run -rm -p 5984:5984 -v /srv/db_files:/usr/local/var/lib/couchdb --name couchdb klaemo/couchdb:1.6.1

2.选项:

数据存储区容器(重新创建 Couchdb 容器后不会重置)

创建数据存储区

docker create -v /usr/local/var/lib/couchdb --name 数据存储 busybox:latest /bin/true

(也可以将主机目录挂载到数据存储容器中)

docker create -v /srv/db_files:/usr/local/var/lib/couchdb --name 数据存储 busybox:latest /bin/true

使用数据存储区

docker run -d --volumes-from 数据存储-p 5984:5984 --name db1 klaemo/couchdb bash

答案2

我认为在不清除整个服务器的情况下配置 CouchDB 的最佳方法是使用 curl 运行脚本。

例如,您可以使用以下脚本启用 CORS(我使用的是 Windows,并且转义与 UNIX 不同),因此我创建了一个包含以下内容的 BAT 文件:

set host=%1
echo %host%

if [%host%] == [] (
    SET host=http://localhost:32770
)

curl -X PUT %host%/_config/httpd/enable_cors -d "\"true\""
curl -X PUT %host%/_config/cors/origins -d "\"*\""
curl -X PUT %host%/_config/cors/credentials -d "\"true\""
curl -X PUT %host%/_config/cors/methods -d "\""GET, PUT, POST, HEAD, DELETE\""
curl -X PUT %host%/_config/cors/headers -d "\"accept, authorization, content-type, origin, referer, x-csrf-token\""
curl -X PUT %host%/mydb

NodeJS 有一个插件可以为您执行相同的 CORS 配置:https://github.com/pouchdb/add-cors-to-couchdb

使用 curl 您可以更改所需的所有配置,包括创建数据库、用户和记录。

相关内容