
Preciso executar o Kafka no docker com UI da web em algum domínio E LINK específico, por exemplo:
http://somesite.com/kafka
Estou usando este docker-compose.yml.
version: '3.3'
services:
zookeeper:
image: 'bitnami/zookeeper:latest'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: 'bitnami/kafka:latest'
ports:
- '9092:9092'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
depends_on:
- zookeeper
kafka-ui:
image: 'provectuslabs/kafka-ui:latest'
environment:
- KAFKA_CLUSTERS_0_NAME=local
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
- KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181
depends_on:
- kafka
networks:
- default
ports:
- '9099:8080'
Quando defino apache2
por domínio direto kafka.somesite.com
, está funcionando.
<VirtualHost *:80>
ServerName kafka.somesite.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9099/
ProxyPassReverse / http://127.0.0.1:9099/
</VirtualHost>
Mas quando tento definir o domínio com o link somesite.com/kafka
, só aparece uma tela em branco.
<VirtualHost *:80>
ServerName somesite.com
ProxyPreserveHost On
ProxyPass /kafka http://127.0.0.1:9099/
ProxyPassReverse /kafka http://127.0.0.1:9099/
</VirtualHost>
Como posso tornar o Kafka funcional com link?
Obrigado.
Responder1
Você tem que mudar duas coisas. Primeiro, você precisa configurar o URL base do contêiner kafka-ui, você pode fazer isso usando oSERVER_SERVLET_CONTEXT_PATH
variável de ambiente.
# ...
kafka-ui:
image: 'provectuslabs/kafka-ui:latest'
environment:
- KAFKA_CLUSTERS_0_NAME=local
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
- KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181
- SERVER_SERVLET_CONTEXT_PATH=/kafka
# ...
Caso contrário, todos os URLs gerados pelo kafka-ui começarão em /
, resultando na busca de CSS, JavaScript e outros /
em vez de /kafka/
.
Então você precisa adaptar a ProxyPass
diretiva para esse caminho:
ProxyPass /kafka/ http://127.0.0.1:9099/kafka/
ProxyPassReverse /kafka/ http://127.0.0.1:9099/kafka/
Sempre ProxyPass
certifique-se de que as barras finais correspondam,conforme observado na documentação:
Se o primeiro argumento terminar com um / final, o segundo argumento também deverá terminar com um / final e vice-versa. Caso contrário, as solicitações resultantes para o backend poderão perder algumas barras necessárias e não entregar os resultados esperados.
Responder2
ServerName ainda deve ser somesite.com
, porque o Apache ainda espera isso como URL base. Quando o URL estiver, somesite.com/kafka
ele deve redirecioná-lo parahttp://127.0.0.1:9099/
Resumindo, a segunda configuração deve funcionar contanto que você definaServerName somesite.com