2

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

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

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

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

2 ответа2

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .