docker容器内的django启动celery任务队列

问题1:

celery任务队列一般要使用redis,但是容器内的django要访问本机的redis是十分麻烦的

解决2:

在容器内安装redis,或者单独启动一个redis的容器,我是单独启动一个redis容器

  • 安装redis镜像docker pull redis
  • 启动redis容器docker run -d --name redis_container redis
  • 查看redis的IP `docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" redis_container
  • 我的redis容器IP是172.17.0.2,在django中配置redis
python 复制代码
setting.py
# Redis 缓存配置
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://172.17.0.2:6379/0',  # Redis 服务器连接信息
        # 'LOCATION': 'redis://:1234qwer@127.0.0.1:6379/0',  # Redis 服务器连接信息
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}

# 使用 Redis 缓存作为默认缓存后端
CACHE_BACKEND = 'django_redis.cache.RedisCache'

celery.py
# 设置 Redis 作为任务队列和结果后端
app.conf.broker_url = 'redis://172.17.0.2:6379/5'
app.conf.result_backend = 'redis://172.17.0.2:6379/4'

目前redis可以正常访问,我的redis缓存使用正常

问题2:

如何启动容器内的celery任务队列

解决2:

试过很多方法,包括在Dockerfile中启动一个.sh文件(同时有启动django和任务队列的命令,Dockerfile只能写一个cmd命令)但是效果都不好,最终的方法是在根目录创建.sh文件,使用docker命令行访问这个文件

  • 在django根目录下创建start_celery.sh
  • 在.sh文件写入命令行
python 复制代码
#!/bin/bash

celery -A RemoteCut worker -l info -P eventlet
  • Dockerfile中设置
  • 在这里插入代码片
python 复制代码
 # 设置工作目录
WORKDIR /remote_cut

# 复制项目文件到容器中
COPY . /remote_cut

COPY ./RemoteCut/settings.py /remote_cut/RemoteCut/

COPY ./start_celery.sh /remote_cut/
  • 命令行启动任务队列
python 复制代码
docker exec -it 容器名称或者容器id /remote_cut/start_celery.sh
相关推荐
Patrick_Wilson1 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy2 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭2 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩3 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
程序员老赵3 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
呱呱复呱呱4 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
WangMingHua1114 天前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽5 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康6 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn869 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker