【发布时间】:2019-04-06 19:49:45
【问题描述】:
我正在尝试使用 Django 设置 Docker 容器。我的 Docker 文件是:
FROM python:3.7-alpine
MAINTAINER Freshness Productions
ENV PYTHONUNBUFFERED 1
COPY ./requirements.txt /requirements.txt
RUN apk add --update --no-cache postgresql-client
RUN apk add --update --no-cache --virtual .tmp-build-deps \
gcc libc-dev linux-headers postgresql-dev
RUN pip install -r /requirements.txt
RUN apk del .tmp-build-deps
RUN mkdir /app
WORKDIR /app
COPY ./app /app
RUN adduser -D user
USER user
RUN rabbitmqctl add_user test testpass1
RUN rabbitmqctl add_vhost myvhost
RUN rabbitmqctl set_permissions -p myvhost test ".*" ".*" ".*"
RUN rabbitmq-server
我的 docker-compose.yml 是:
version: "3"
services:
app:
build:
context: .
image: &app app
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py wait_for_db &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000
export C_FORCE_ROOT='true'
celery -A app beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler"
env_file: &envfile
- env.env
depends_on:
- db
- broker
db:
image: postgres:10-alpine
environment:
- POSTGRES_DB=app
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword
worker:
build: .
image: *app
restart: "no"
env_file: *envfile
command: sh -c "celery -A app worker --loglevel=info"
volumes:
- ./app:/app
depends_on:
- broker
broker:
image: rabbitmq:3
env_file: *envfile
ports:
- 5672:5672
除了我在 docker-compose 中使用两个不同的图像之外,我没有看到我需要做什么?这有关系吗?我得到错误:
ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.
当我尝试运行 docker-compose up 时
【问题讨论】:
-
您似乎正在尝试连接到 RabbitMQ 的本地主机。尝试连接到代理而不是本地主机(127.0.0.1),看看是否存在问题
-
我不知道怎么做?我的环境文件中有一个环境变量 CELERY_BROKER=amqp://guest:guest@broker:5672
-
你找到解决办法了吗?>
-
使用您的 docker 设置,我收到此错误 /bin/sh: rabbitmqctl: not found ERROR: Service 'worker' failed to build: The command '/bin/sh -c rabbitmqctl add_user test testpass1'返回一个非零代码:127 你能帮忙吗?