Я ищу способ запустить couchbase (6.0.3) в docker, а затем, как только он будет готов, запустите заведомо исправную команду couchbase-cli (см. Ниже), чтобы настроить кластер без меня не нужно ничего делать, кроме запуска контейнера.
couchbase-cli cluster-init --cluster "couchbase://127.0.0.1" --cluster-name "couchbase" --cluster-username "admin" --cluster-password "password" --services "data,index,query" --cluster-ramsize 500 --cluster-index-ramsize 256 --index-storage-setting "memopt";
До сих пор я пытался решить эту проблему, используя ключевое слово docker -compose command
, как показано ниже
version: '2.4'
services:
couchbase:
image: couchbase:6.0.3
container_name: "couchbase"
restart: always
ports:
- 8091-8094:8091-8094
- 11210:11210
command: >
/bin/bash -c "
until curl -I -s http://localhost:8091/ui/index.html
do
echo 'Waiting for Couchbase to start (retrying in 3 seconds)...'
sleep 3
done
couchbase-cli cluster-init --cluster "couchbase://127.0.0.1" --cluster-name "couchbase" --cluster-username "admin" --cluster-password "password" --services "data,index,query" --cluster-ramsize 500 --cluster-index-ramsize 256 --index-storage-setting "memopt"
"
Это привело к в, казалось бы, бесконечном l oop печати Waiting for Couchbase to start (retrying in 3 seconds)...
с couchbase, недоступной на localhost: 8091.
Затем я изменил tacti c и решил создать свой собственный Dockerfile на основе образа couchbase, изменив точка входа для включения команды couchbase-cli следующим образом:
Dockerfile:
FROM couchbase:6.0.3
RUN mkdir files
COPY initcouchbase.sh files/
RUN chmod +x files/initcouchbase.sh
ENTRYPOINT ./files/initcouchbase.sh
initcouchbase. sh
#!/usr/bin/env bash
/entrypoint.sh couchbase-server &
until curl -I -s http://localhost:8091/ui/index.html
do
echo 'Waiting for Couchbase to start (retrying in 3 seconds)...'
sleep 3
done
couchbase-cli cluster-init --cluster "couchbase://127.0.0.1" --cluster-name "couchbase" --cluster-username "admin" --cluster-password "password" --services "data,index,query" --cluster-ramsize 500 --cluster-index-ramsize 256 --index-storage-setting "memopt"
Такого рода работы, когда Журналы docker показывают, что кластер был настроен с сообщением об успешном выполнении команды cli (SUCCESS: Cluster initialized
), и в течение нескольких минут можно войти в локальный кластер. Однако, спустя мгновение что-то решает снова запустить (я предполагаю, что initcouchbase.sh
запускается снова и снова), что делает базу бездействия снова недоступной в течение нескольких секунд, пока l oop не завершится каждый раз.
Кто-нибудь пытался это сделать и победил? Я не вижу большого содержания по этому конкретному случаю использования здесь, кроме того, что приведено ниже, но ответ не охватывает вопросы моего вопроса.
конфигурация couchbase на docker