docker-compose 向上 <service> 无法正常启动 <service>

docker-compose up <service> does not launch <service> properly

上下文: 我在 celery + rabbitmq 堆栈上有一个 master-worker 系统。
系统已 dockerized(worker 服务未在此处介绍)

version: '2'
services:
    rabbit:
        hostname: rabbit
        image: rabbitmq:latest
        environment:
            - RABBITMQ_DEFAULT_USER=admin
            - RABBITMQ_DEFAULT_PASS=mypass
        ports:
            - "5672:5672"

    master:
        build:
            context: .
            dockerfile: dockerfile
        volumes:
            - .:/app
        links:
            - rabbit
        depends_on:
            - rabbit

当我执行 docker-compose up - 一切正常!

问题:但是我不能使用docker-compose up,我需要使用docker-compose masterdocker-compose worker(工人的两个单独的命令和主机)。因此,当我执行 docker-compose master - 容器启动,但挂断了!:

研究:我发现它在任务提交时挂起:
result = longtime_add.delay(count) 其中 longtime_add 是一项任务。

完整代码:https://github.com/waryak/MastersDiploma/tree/vlad

另外,请编辑标题 - 我觉得它需要更清晰的标题

几个要点:(1) 我没有看到您在 github 中的生产者代理 url 的预期输出消息; (2) 我找不到 /src/network 添加到你的 pythonpath 的位置; (3) 在 celery.py 中加载生产者代理 url 的代码看起来是错误的,因为它正在寻找 CONFIG 变量而不是 PRODUCE_BROKER_URL,因为它在 variables.env 文件。生产者超时的原因是它无法连接到代理,因此您可以通过打印出生产者和工人代理 URL 来走上正确的道路。首先在生产者中尝试对 broker_url 进行硬编码可能更容易:

from celery.app import Celery
app = Celery(broker_url='amqp://admin:mypass/rabbit:56772')
app.send_task(name='messages.tasks.longtime_add', kwargs={})

我刚试了 docker-compose up rabbit master 就成功了。这很奇怪,因为我在代理日志或任何其他日志中看不到任何外部差异。此外,docker 文档保证,所有依赖的服务都将启动...