【发布时间】:2020-05-24 14:24:34
【问题描述】:
我有一个 django 应用程序,我想使用 docker run 命令运行 redis 和 celery
在我使用 docker-compose 文件构建图像之后 我在不同的 windows powershell 上运行两个命令
docker run -it -p 6379:6379 redis-
docker run -it image_celery
我的 celery powershell 无法检测到 redis
[2020-02-08 13:08:44,686: ERROR/MainProcess] 消费者:无法连接到 redis://redis:6379/1:错误 -2 连接到 redis:6379。名称或服务未知.. 2.00 秒后重试...
version: '3'
services:
the-redis:
image: redis:3.2.7-alpine
ports:
- "6379:6379"
volumes:
- ../data/redis:/data
celery_5:
build:
context: ./mltrons_backend
dockerfile: Dockerfile_celery
volumes:
- ./mltrons_backend:/code
- /tmp:/code/static
depends_on:
- the-redis
deploy:
replicas: 4
resources:
limits:
memory: 25g
restart_policy:
condition: on-failure
volumes:
db_data:
external: true
Dockerfile_celery
FROM python:3.6
ENV PYTHONUNBUFFERED 1
# Install Java
RUN apt-get -y update && \
apt install -y openjdk-11-jdk && \
apt-get install -y ant && \
apt-get clean && \
rm -rf /var/lib/apt/lists/ && \
rm -rf /var/cache/oracle-jdk11-installer;
ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64/
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code
ENV REDIS_HOST=redis://the-redis
ENV REDIS_PORT=6379
RUN pip install --upgrade 'sentry-sdk==0.7.10'
ENTRYPOINT celery -A mlbot_webservices worker -c 10 -l info
EXPOSE 8102
芹菜.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mlbot_webservices.settings')
app = Celery('mltrons_training')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
settings.py
CELERY_BROKER_URL = 'redis://the-redis:6379/'
CELERY_RESULT_BACKEND = 'redis://the-redis:6379/'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
【问题讨论】:
-
如果使用
docker-compose up启动容器,效果会更好吗?有一些 networking setup that Compose will do for you 您的普通docker run命令无法复制。 -
在 docker-compose up 的情况下它可以完美运行,但我想使用 docker-run 运行有什么办法吗?
标签: django powershell docker redis celery