我有 3 个码头工人撰写文件。一个启动Kafka,另外两个是消费者和生产者。在 kafka 中添加了其他 docker 撰写文件中的external_links,但仍然无法从容器内部访问 kafka。从容器外部,我可以通过 localhost:9092 访问,但是在 docker 容器内部呢?
# docker-compose1.yml
version: "3.6"
services:
zookeeper:
image: 'docker.io/bitnami/zookeeper:3.7'
container_name: zookeeper
ports:
- '2181:2181'
volumes:
- 'zookeeper_data:/bitnami'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: 'docker.io/bitnami/kafka:3'
container_name: kafka
ports:
- '9092:9092'
volumes:
- 'kafka_data:/bitnami'
environment:
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- KAFKA_LISTENERS=PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
- KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_ADVERTISED_HOST_NAME=localhost
- KAFKA_ADVERTISED_PORT=9092
- KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
depends_on:
- zookeeper
volumes:
zookeeper_data:
external: true
kafka_data:
external: true
# docker-compose2.yml
version: "3.6"
services:
web:
hostname: ocp-transmitter
image: 'ocp/transmitter'
command: bash -c "bundle install && foreman start"
ports:
- '3000:3000'
volumes:
- .:/app:cached
stdin_open: true
tty: true
external_links:
- kafka
首先,删除它们,它们已被弃用
- KAFKA_ADVERTISED_HOST_NAME=localhost
- KAFKA_ADVERTISED_PORT=9092
其次,更仔细地阅读bitnami图像文档,所有Kafka属性都以Kafka_CFG_
开头,然后阅读关于内部/外部侦听器的部分
链接的答案是正确的多个docker-compse项目之间的通信
运行带有名称的docker网络创建
以单独设置外部桥接网络,然后将网络
部分添加到该网络中的每个服务(Zoo的,Kafka,和您的Kafka客户端)。然后确保它是外部的
networks:
example-net:
external: true
然后,您将在应用程序中使用kafka:29092,而不是本地主机,而不是端口9092
问题内容: 我有一个数据容器,该容器具有其他容器使用的卷(–volumes-from)。 数据容器被意外删除。 幸运的是,该卷没有删除。 有什么方法可以重新运行数据容器并将其指向该卷? 问题答案: 有什么方法可以重新运行数据容器并将其指向该卷? 当然,我在“如何从已删除的Docker容器中恢复数据?如何将其重新连接到数据?”中对此进行了详细说明。 您需要使用相同的VOLUME创建一个新容器(但 *
我有一个数据容器,它有一个被其他容器使用的卷(-volumes from)。 数据容器意外被删除。 谢天谢地,卷没有被删除。 有什么方法可以重新运行数据容器并将其指向此卷?
我正在尝试从另一个码头工人容器连接到 kafka docker 容器。但它没有连接。 为了运行kafka和zookeeper,我使用了docker compose文件: 容器docker compose 17138956372294708100 _ kafkatest . producer _ 1和docker compose 17138956372294708100 _ kafkatest .
我拉出了mysql docker映像,并用命令运行容器: 此时,springBoot在本地工作。它与MySQL连接: 现在,我希望springBoot应用程序也在单独的docker容器上,在同一服务器上。为此,我使用了DockerFile: 同样,它无法连接到数据库:
我试图用PHP、MariaDB和一个教程创建一个PHP开发环境,该教程建议使用Adminer进行数据库管理。因此,我生成了我的文件如下: 但是,当我为MariaDB设置卷时,在管理员登录页面中出现了一个错误。当我没有设置它们时,它似乎工作得很好。
我无法将作为docker容器运行的应用程序连接到mongoDB。我知道新版本docker compose不推荐使用“链接”,所以我尝试使用自定义网络。我的码头工人。yml: 我的应用程序的Dockerfile: 当我运行时,我在应用程序中得到以下错误消息: 在第一次连接时连接到服务器[127.0.0.1:27017]失败[MongoNetworkError:连接ECONNREFUSED127.0.