На моем хосте windows 10 запущены следующие контейнеры docker:
PS C:\Users\jj2> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aacbb0c8f189 couchdb:2.1.1 "tini -- /docker-ent…" 15 seconds ago Up 12 seconds 4369/tcp, 9100/tcp, 0.0.0.0:15984->5984/tcp, 0.0.0.0:15986->5986/tcp jj2_server-1_1
b00138d9c030 couchdb:2.1.1 "tini -- /docker-ent…" 16 seconds ago Up 12 seconds 4369/tcp, 9100/tcp, 0.0.0.0:25984->5984/tcp, 0.0.0.0:25986->5986/tcp jj2_server-2_1
e4c984413ac1 couchdb:2.1.1 "tini -- /docker-ent…" 16 seconds ago Up 12 seconds 0.0.0.0:5984->5984/tcp, 4369/tcp, 9100/tcp, 0.0.0.0:5986->5986/tcp jj2_server-0_1
И я могу запускать Fauxton для каждого экземпляра следующим образом:
http://127.0.0.1:5984/
http://127.0.0.1:15984/
http://127.0.0.1:25984/
Теперь я пытаюсь настроить репликацию в главном контейнере ... но я, должно быть, путаю значение для цели репликации. Вот значения, которые я указываю:
Replication Source: Local Database
Source Name: widgets
Replication Target: New Remote Database
New Database: http://127.0.0.1:15984/widgets
Replication Type: Continuous
Когда я сохраняю это, попытка репликации завершается неудачно ... и если я снова открываю инструмент конфигурации, цель изменяется на "Существующая локальная база данных".
Вот как выглядит исходная конфигурация JSON:
{
"_id": "310ab1c7a68d4ae4aba039d2fa00320f",
"_rev": "2-cf1a3abced5f09ceebd9d54f42ebd65d",
"user_ctx": {
"name": "couchdb",
"roles": [
"_admin",
"_reader",
"_writer"
]
},
"source": {
"headers": {
"Authorization": "Basic Y291Y2hkYjpwYXNzd29yZA=="
},
"url": "http://127.0.0.1:5984/widgets"
},
"target": {
"headers": {
"Authorization": "Basic Y291Y2hkYjpwYXNzd29yZA=="
},
"url": "http://127.0.0.1:15984/widgets"
},
"create_target": true,
"continuous": true,
"owner": "couchdb"
}
подсказка / справка для поля "Новая база данных", по-видимому, указывают на то, что мне нужно использовать URL ... который Вот почему я попробовал 127.0.0.1.
Любые предложения будут оценены.
РЕДАКТИРОВАТЬ 1
Одна вещь, которую я должен добавить, заключается в том, что 2 дополнительные узлы не были настроены на них. Это значит, что я создал кластер, но когда я запускаю веб-приложение, оно предлагает мне создать либо один узел, либо кластер. я должен настроить каждый узел как один узел, прежде чем репликация будет работать?
Кроме того, именно так я и создал кластер / контейнеры: https://github.com/apache/couchdb-docker/issues/74 Я использовал этот файл docker -compose.yml.
РЕДАКТИРОВАТЬ 2
Я знаю, понимаю / узнал, что что-нибудь 127.0.0.1 будет указывать на компьютер HOST, где я заблудился. Но как указать один контейнер на другой?
Что касается кластера, используя fauxton, работающий на 127.0.0.1:5984, для сервера 0 я добавил следующие 2 узла, например:
couchdb-1: 5984 адрес привязки 0.0.0.0 couchdb-2: 5984 адрес привязки 0.0.0.0
Затем, когда я делаю это (обратите внимание на порт):
http://127.0.0.1:15984/_node/couchdb@couchdb-1/_config
Я получаю файл git json ответ, показывающий, что что-то работает под именем "couchdb-1". Однако я понимаю, что все еще использую свою машину HOST, чтобы получить представление о сервере couchdb-1. (server-1)
В командной строке я подтвердил, что у меня есть такие узлы:
PS C: \ Users \ jj2> curl -X GET "http://127.0.0.1: 5984 / _membership"--user couchdb Введите пароль хоста для пользователя 'couchdb': {" all_nodes ": [" couchdb@couchdb-0 "]," cluster_nodes ": [" couchdb@couchdb-0 "," couchdb@couchdb-1 ", "couchdb@couchdb-2"]} PS C: \ Users \ jj2>
Наконец, я подумал, что, возможно, я мог бы использовать IP-адреса контейнеров, назначенных docker, но ни один из них не может быть проверен от хозяина. Все они 172.xxx адресов.
РЕДАКТИРОВАТЬ 3
В случае, если это помогает.
PS C:\Users\jj2> docker network inspect jj2_network
[
{
"Name": "jj2_network",
"Id": "a0a799f7069ff49306438d9cb7884399a66470a7f0e9ac5364600c462153f53c",
"Created": "2020-01-30T21:18:55.5841557Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.19.0.0/16",
"Gateway": "172.19.0.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"006b6d02cd4e962f3df9d6584d58b36b67864872446f2d00209001ec58d3cd52": {
"Name": "jj2_server-1_1",
"EndpointID": "91260368a2d5014743b41c9ab863a2acbfe0a8c7f0a18ea7ad35a3c16efb4445",
"MacAddress": "02:42:ac:13:00:03",
"IPv4Address": "172.19.0.3/16",
"IPv6Address": ""
},
"15b261831c46fb89cdc83f9deb638ada0d9d8a89ece0bc065e0a45818e9b4ce3": {
"Name": "jj2_server-2_1",
"EndpointID": "cf072d0bbd95ab86308ac4c15b71b47223b09484506e07e5233d526f46baca1e",
"MacAddress": "02:42:ac:13:00:04",
"IPv4Address": "172.19.0.4/16",
"IPv6Address": ""
},
"aeaf74cf591cffa8e7463e82b75e9ca57ebbcfd1a84d3f893ea5dcae324dbd1e": {
"Name": "jj2_server-0_1",
"EndpointID": "0a6d66b95bf973f0432b9ae88c61709e63f9e51c6bbf92e35ddf6eab5f694cc1",
"MacAddress": "02:42:ac:13:00:02",
"IPv4Address": "172.19.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {
"com.docker.compose.network": "network",
"com.docker.compose.project": "jj2",
"com.docker.compose.version": "1.24.1"
}
}
]