首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接两个码头-集装箱通过码头-合成

连接两个码头-集装箱通过码头-合成
EN

Unix & Linux用户
提问于 2020-04-12 07:40:05
回答 2查看 2.1K关注 0票数 1

我试图将部署在一个容器中的web应用程序连接到部署在另一个容器上的rabbitmq上。

通过依赖这个连接到带有docker的RabbitMQ容器,我创建了以下docker:

代码语言:javascript
复制
version: '3'

services:
 webapp:
    container_name: chat
    build:
      context: .
    depends_on:
      - broker
    ports:
      - "8080:8080"

broker:
   container_name: rabbit_chat
   image: rabbitmq
   command: rabbitmq-server
   expose:
     - 5672
     - 15672
   healthcheck:
     test: ["CMD", "curl", "-f", "http://broker:5672"]
     interval: 30s
     timeout: 10s
     retries: 5

webapp是web应用程序的一种服务,在该服务中,我规定了以下的rabbitmq属性:

代码语言:javascript
复制
host = broker
port = 15672
login = guest
password = guest

我选择'broker‘作为主机,在默认情况下使用docker中的服务名称来连接容器的文档中建议这样做。

这并不是work.Also,我试图使用"localhost“作为连接的主机。

此外,检查容器"rabbit_chat“,我在输出中看到:

代码语言:javascript
复制
  "Log": [
            {
                "Start": "2020-04-11T14:54:25.0988242Z",
                "End": "2020-04-11T14:54:25.2920557Z",
                "ExitCode": -1,
                "Output": "OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused \"exec: \\\"curl\\\": executable file not found in $PATH\": unknown"
            }
EN

回答 2

Unix & Linux用户

发布于 2020-04-12 08:01:08

尝试一个网络

代码语言:javascript
复制
services:
  webapp:
    ...
    networks:
    - mynetwork

 broker:
   ...
    networks:
    - mynetwork

networks:
  mynetwork:

这还设置了内部DNS,因此您实际上可以使用broker作为webapp中的主机名来引用另一个容器。

票数 0
EN

Unix & Linux用户

发布于 2020-04-14 07:39:48

从您的评论来看,它看起来像是访问授权问题,而不是停靠端口问题。

首先,尝试从兔子-mq容器内部卷曲,从日志中看,您似乎没有在兔子容器上安装curl,所以请安装它并尝试。

然后尝试从外部(从您的机器):

只需在兔子容器中标出港口:"5672:5672“和"15672:15672”。

curl localhost:5672 (或直接对容器ip地址进行停靠检查和卷曲)。

这些图像是从相同的基本图像中构建的吗?也许你在兔子的照片里有不明飞行物。

同时尝试关闭您机器上的ufw并检查(如果有)。

最好的方式之间的集装箱之间的对接-撰写是通过网桥,所以最终你将不得不使用它。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/579532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档