Вот мой файл определения v3.5
docker-compose.yml
.Он имеет сеть analytics
(с псевдонимом с тем же именем), и оба включенных сервиса соединяются с указанной сетью для связи друг с другом.Это работает.
Однако я хочу, чтобы эти службы (порты) также были доступны для компьютера HOST.Есть способ сделать это, определив дополнительную сеть и / или указав дополнительные ports:
записей в самих сервисах, но я не могу понять, как именно, потому что документация очень запутанная и зависит от версии (движущиеся цели).
Не разрушая нижеследующее (потому что оно работает внутренне), какие дополнения я сделаю (и где), чтобы также предоставить обе службы для машины HOST?
Спасибо!
version: '3.5'
networks:
analytics:
name: analytics
driver: bridge
# ===========================================
# Service: Zookeeper
# ===========================================
zookeeper:
image: 'wurstmeister/zookeeper:latest'
container_name: analytics-ZooKeeper
networks:
- analytics
ports:
- "2181:2181"
volumes:
- ./data.d/zookeeper.d:/opt/zookeeper-3.4.9/data
# ===========================================
# ===========================================
# Service: Kafka
# ===========================================
kafka:
build:
context: ./kafka.d
dockerfile: Dockerfile
image: nmvega/kafka:latest
networks:
- analytics
ports:
- 9092-9094:9092 # For one to three Kafka brokers.
environment:
#KAFKA_ADVERTISED_HOST_NAME: vps00 # Docker host Name. <--- BEFORE
KAFKA_ADVERTISED_HOST_NAME: 192.168.0.180 # Docker host IP. <--- AFTER
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data.d/kafka.d:/kafka
depends_on:
- zookeeper
# ===========================================
РЕДАКТИРОВАТЬ : После дальнейшего изучения приведенная выше конфигурация, как было первоначально опубликовано, верна с небольшой модификацией от name
хоста Docker к IP
хоста Docker (какпредписано readme для изображения , которое я использую).Случайное использование name
не имело значения, пока я не попытался получить доступ к услуге с хоста.
Надеюсь, этот пример будет полезен для других, желающих его увидеть.Спасибо комментаторам ниже.