Docker + CouchDB optimale Konfiguration für die kontinuierliche Bereitstellung

1356
dipole_moment

Ich habe vor kurzem angefangen, mit Docker zu experimentieren, und wenn es um Code-Implementierungen (z. B. Knotenserver) geht, funktioniert es äußerst gut. Wenn es jedoch um die Bereitstellung eines couchDB-Servers geht, ist dies eine Herausforderung. Der herausfordernde Aspekt hängt wahrscheinlich mit meiner Unwissenheit in Bezug auf das Thema zusammen.

Das aktuelle Setup : Fortlaufende Bereitstellung in der AWS EC2-Instanz
Das Problem: Bei jeder Bereitstellung wird die Datenbank gelöscht und die couchDB erneut installiert.
Endziel : Bei Bereitstellungen sollte die Datenbank nicht entfernt und erneut installiert werden. Sie sollten einfach die couchdb-Konfiguration aktualisieren, wenn eine zur Verfügung gestellt wird (z. B. Admin-Party-Modus ausschalten, Benutzer hinzufügen, ...).

Dockerfile: Ganz einfach: FROM couchdb:latest

Mit welchen Ansätzen kann ich das erreichen?

2
Je mehr ich darüber nachdenke, ich bin nicht ganz sicher, ob ich Docker für die Datenbankbereitstellung verwenden sollte. Ich sollte es eher als einmaliges Setup verwenden. dipole_moment vor 8 Jahren 0
Wenn Sie die Antwort von @ werty1st überprüfen, können Sie feststellen, dass die Bereitstellung konfigurierter CouchDB-Instanzen unterstützt wird, sofern Sie einen separaten Container für persistente Daten verwenden oder die Daten in ein Hostverzeichnis außerhalb des Containers schreiben. Ilias Karim vor 6 Jahren 0

2 Antworten auf die Frage

2
werty1st

Sie müssen Ihr Datenvolumen dauerhaft machen.

1. Option:

Hängen Sie das Host-Verzeichnis in den Container ein

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

2. Option:

Ein Datastore-Container (der nach dem Erstellen des couchdb-Containers nicht zurückgesetzt wird)

Datenspeicher erstellen

Docker -v / usr / local / var / lib / couchdb - name datastore busybox: latest / bin / true

(Es ist auch möglich, ein Hostverzeichnis in den Datastore-Container einzuhängen.)

docker -v / srv / db_files erstellen: / usr / local / var / lib / couchdb - name datastore busybox: latest / bin / true

Datastore verwenden

Docker-Run -d --volumes-from datastore -p 5984: 5984 - name db1 klaemo / couchdb bash

Wenn Sie die Konfiguration beibehalten möchten, wird dies hier erläutert: https://hub.docker.com/_/couchdb/ -> Eigene CouchDB-Konfigurationsdatei verwenden werty1st vor 7 Jahren 0
Diese klingen wie tolle Vorschläge. Ich frage mich, ob diese Lösungen mit ECS-Clustern oder nur mit EC2-Instanzen kompatibel sind. Ilias Karim vor 6 Jahren 0
1
pfernandom

Ich denke, der beste Weg, um CouchDB zu konfigurieren, ohne den gesamten Server auszulöschen, ist das Ausführen eines Skripts mit curl.

Zum Beispiel können Sie CORS mit dem folgenden Skript aktivieren (ich verwende Windows und die Escape-Funktion unterscheidet sich von UNIX). Daher habe ich eine BAT-Datei mit den folgenden Elementen erstellt:

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 hat ein Plugin, das dieselbe CORS-Konfiguration für Sie durchführt: https://github.com/pouchdb/add-cors-to-couchdb .

Mit curl können Sie alle gewünschten Konfigurationen ändern, einschließlich der Erstellung von Datenbanken, Benutzern und Datensätzen.