Я использую docker-kafka проекта wurstmeister для запуска kafka / zookeeper в контейнере.Я создаю контейнеры, используя localhost в качестве переменной KAFKA_ADVERTISED_HOST_NAME: localhost
.
Я написал приложение на Java, которое использует flink для подключения и использования одной из тем этого контейнера Kafka.Если я экспортирую работающую банку и запускаю ее со своего компьютера, она работает абсолютно нормально.Когда я создаю следующий образ для запуска jar из другого контейнера-докера, я получаю исключение (примерно через 30 секунд после выполнения) Exception in thread "main" org.apache.flink.runtime.client.JobExecutionException: org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata
, которое, по моему мнению, связано с тем, что моя программа Java не может связаться с сервером Kafka, работающим вдругой контейнер.
Вот докер-файл моего Java-приложения:
# Dockerfile
FROM anapsix/alpine-java
MAINTAINER myself myself
COPY myApp.jar /home/myApp.jar
CMD ["java","-jar","/home/myApp.jar"]
А вот докер-compose.yml для докера wurstmeister kafka:
version: "3.5"
networks:
myNetwork:
name: myNetwork
driver: bridge
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
networks:
- myNetwork
kafka:
build: .
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ADVERTISED_PORT: "9092"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
ALLOW_PLAINTEXT_LISTENER: "yes"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- myNetwork
auth_analytics:
build:
context: .
dockerfile: auth_dockerfile
depends_on:
- kafka
networks:
- myNetwork
Я пробовал несколько версийвыше.Изначально я не настраивал какую-либо сеть, которая, как мне казалось, могла быть проблемой, однако вышеприведенное, что создает сеть, не имеет никакого значения.Я попробовал "localhost: 9092" в качестве сервера начальной загрузки в моем приложении Java и "myNetwork: 9092", когда я читал онлайн.
Я также прочитал FAQ от wurstmeister о подключении, но я не вижу ничего плохого в моей настройке.
Я также попытался запустить образ приложения Java безиспользуя docker-compose (я запустил docker-compose, чтобы запустить zookeeper / kafka, а затем я выполнил сборку docker, запустил docker для образа моего приложения Java. Это не имело никакого значения.)
Я застрял,Что я делаю не так?