Configuración óptima de Docker + CouchDB para el despliegue continuo

2

Recientemente he comenzado a experimentar con Docker y, en lo que respecta a las implementaciones de código (es decir, el servidor de nodo), funciona extremadamente bien. Sin embargo, cuando se trata de la implementación de un servidor couchDB, esto plantea un desafío. El aspecto desafiante probablemente esté relacionado con mi ignorancia sobre el tema.

La configuración actual : Implementación continua en la instancia de AWS EC2
La cuestión : Cada implementación borra la base de datos y reinstala couchDB
Objetivo final : Las implementaciones no deben eliminar y reinstalar la base de datos. Simplemente deben actualizar la configuración de couchdb si se proporciona una (es decir, desactivar el modo de administrador, agregar usuario ...

Dockerfile: Bastante simple: FROM couchdb:latest

¿Cuáles son algunos enfoques que puedo usar para lograr esto?

dipole_moment
fuente
Cuanto más lo pienso, no estoy completamente seguro de que deba usar Docker para la implementación de la base de datos. Más bien, debería usarlo como una configuración de una sola vez.
dipole_moment
Oye, si verifica la respuesta de @ werty1st, puede ver que la implementación de instancias de CouchDB configuradas es compatible siempre que use un contenedor separado para datos persistentes o escriba los datos en un directorio host fuera del contenedor.
Ilias Karim

Respuestas:

2

Tienes que hacer que tu volumen de datos sea persistente.

1. Opción:

Montar el Directorio de Host en el contenedor

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

2. Opción:

Un contenedor de Datastore (que no se restablece después de volver a crear el contenedor couchdb)

Crear almacén de datos

ventana acoplable crear -v / usr / local / var / lib / couchdb - nombre del almacén de datos busybox: última / bin / true

(También es posible montar un directorio de host en el contenedor del almacén de datos)

docker cree -v / srv / db_files: / usr / local / var / lib / couchdb - nombre del almacén de datos busybox: latest / bin / true

Utilizar Datastore

ventana acoplable ejecutada -d - volúmenes-desde el almacén de datos -p 5984: 5984 - nombre db1 klaemo / couchdb bash

werty1st
fuente
Si desea mantener la configuración aquí explicada: hub.docker.com/_/couchdb - & gt; Usando su propio archivo de configuración CouchDB
werty1st
Estas suenan como grandes sugerencias. Me pregunto si estas soluciones son compatibles con clústeres de ECS o solo con instancias de EC2.
Ilias Karim
1

Creo que la mejor manera de configurar CouchDB sin borrar todo el servidor, es ejecutar un script con curl.

Por ejemplo, puede habilitar CORS con la siguiente secuencia de comandos (estoy usando Windows y el escape es diferente de UNIX), así que creé un archivo BAT con lo siguiente:

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 tiene un complemento que hace la misma configuración de CORS para ti: https://github.com/pouchdb/add-cors-to-couchdb .

Con curl puede cambiar todas las configuraciones que desee, incluida la creación de bases de datos, usuarios y registros.

pfernandom
fuente