Docker + CouchDB оптимальная конфигурация для непрерывного развертывания

Я недавно начал экспериментировать с Docker, и когда дело доходит до развертывания кода (то есть сервера узлов), он работает очень хорошо. Однако, когда дело доходит до развертывания сервера couchDB, это создает проблему. Сложный аспект, вероятно, связан с моим незнанием этой темы.

Текущая настройка: непрерывное развертывание на экземпляр AWS EC2
Проблема: каждое развертывание стирает базу данных и переустанавливает couchDB
Конечная цель: развертывания не должны удалять и переустанавливать базу данных. Они должны просто обновить конфигурацию couchdb, если она есть (то есть отключить режим администратора, добавить пользователя,...)

Dockerfile: довольно просто: FROM couchdb:latest

Какие подходы я могу использовать для достижения этой цели?

2 ответа

Вы должны сделать свой объем данных постоянным.

1. Вариант:

Смонтировать каталог хоста в контейнер

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

2. Вариант:

Контейнер хранилища данных (который не сбрасывается после воссоздания контейнера couchdb)

Создать хранилище данных

docker create -v / usr / local / var / lib / couchdb - имя хранилища данных busybox: последняя / bin / true

(также возможно смонтировать хост-каталог в контейнер хранилища данных)

docker create -v / srv / db_files: / usr / local / var / lib / couchdb - имя хранилища данных busybox: последний / bin / true

Используйте Datastore

запуск докера -d --volumes-from datastore -p 5984:5984 - имя db1 klaemo/couchdb bash

Я думаю, что лучший способ настроить 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 вы можете изменить все необходимые конфигурации, включая создание баз данных, пользователей и записей.

Другие вопросы по тегам