Я не знаю точных данных о вашем соединении (хост: порт), которые вы используете в своем приложении, но наиболее распространенная ошибка в этой ситуации - использование localhost
.
localhost
в контейнере docker не совпадает с localhost при запуске приложения вне контейнера docker. Поэтому при запуске приложения внутри контейнера docker необходимо указать другое имя хоста для вашего развертывания cassandra.
По умолчанию docker будет использовать идентификатор контейнера в качестве имени хоста контейнера, поэтому вам придется заменить localhost
с вашим идентификатором контейнера cassandra или, альтернативно, запустите контейнер cassandra, используя --hostname
, чтобы определить имя хоста, которое вы будете использовать sh.
В конце концов, более элегантным решением будет использование docker создать файл, где именем хоста каждой службы является имя службы. Это очень полезно для совместного запуска нескольких служб, которые «общаются» друг с другом.
Здесь вы можете найти все, что я вам объяснил относительно имен узлов контейнеров .
Также здесь вы можете найти хорошее введение в docker compose.
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
В этом примере имена хостов для каждого сервиса: web и redis . Вы можете применить это к вашему составному файлу и использовать соответствующие имена хостов для cassandra и kafka.