首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS Elastic Beanstalk上部署时,无法通过镜像名称引用与docker一起使用的RabbitMQ

在AWS Elastic Beanstalk上部署时,无法通过镜像名称引用与docker一起使用的RabbitMQ
EN

Stack Overflow用户
提问于 2020-07-24 21:58:05
回答 1查看 125关注 0票数 0

我在本地机器上有一个docker-compose.yml文件,如下所示:

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

services:
  web: &my_web_app
    build: .
    command: gunicorn MyApp.wsgi --workers 3
    ports:
      - "80:8000"
    depends_on:
      - rabbitmq
  rabbitmq:
    image: rabbitmq:management
  celery_worker:
    <<: *my_web_app
    command: celery -A MyApp worker --autoscale=10,1 --loglevel=info
    ports: []
    depends_on:
      - rabbitmq

稍后,我将名为web的docker映像上载到名为myName/web:latest的docker注册表。在那之后,我创建了一个Dockerrun.aws.json,如下所示:

代码语言:javascript
复制
{
  "AWSEBDockerrunVersion": 2,
  "Authentication": {
    "Bucket": "cred-keeper",
    "Key": "index.docker.io/.dockercfg"
  },
  "containerDefinitions": [{
      "Authentication": {
        "Bucket": "cred-keeper",
        "Key": "index.docker.io/.dockercfg"
      },
      "command": [
        "celery",
        "-A",
        "MyApp",
        "worker",
        "--autoscale=10,1",
        "--loglevel=info"
      ],
      "essential": true,
      "image": "myName/web:latest",
      "name": "celery_worker",
      "memory": 175
    },
    {
      "essential": true,
      "image": "rabbitmq:management",
      "name": "rabbitmq",
      "memory": 175,
      "portMappings": [{
        "containerPort": 5672,
        "protocol": "tcp",
        "hostPort": 5672
      }]
    },
    {
      "Authentication": {
        "Bucket": "cred-keeper",
        "Key": "index.docker.io/.dockercfg"
      },
      "command": [
        "gunicorn",
        "MyApp.wsgi",
        "--workers",
        "4"
      ],
      "essential": true,
      "image": "myName/web:latest",
      "memory": 256,
      "name": "web",
      "portMappings": [{
        "containerPort": 8000,
        "hostPort": 80
      }]
    }
  ],
  "family": "",
  "volumes": []
}

名为web的图像是一个Django (Python的web框架)应用程序,我过去常常使用amqp://rabbitmq:5672等应用程序中使用容器名称的URL来访问我的RabbitMQ容器,当我在本地机器上运行它时,它工作得非常好。

但是,当我使用Dockerrun.aws.json将它部署到AWS Elastic Beanstalk时,我在我的芹菜容器的日志中得到了一个错误,比如[2020-07-24 08:29:51,709: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@rabbitmq:5672//: failed to resolve broker hostname

为什么我不能通过URL中容器图像的名称访问亚马逊网络服务上的RabbitMQ,就像它在我的本地机器上工作一样?如果不使用amqp://rabbitmq:5672作为我的Django web应用程序的网址,我应该如何访问部署在亚马逊网络服务实例上的RabbitMQ容器?

请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-25 02:17:03

如果您在web部分的docker-compose.yml中添加如下内容:

代码语言:javascript
复制
links:
  - rabbitmq

Dockerrun.aws.json中,在celery_workerweb下,您必须添加:

代码语言:javascript
复制
"links": [
   "rabbitmq"
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63075106

复制
相关文章

相似问题

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