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://:[email protected]: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
相关推荐
angushine1 小时前
鲲鹏麒麟搭建Docker仓库
运维·docker·容器
W_kiven3 小时前
Centos安装Dockers+Postgresql13+Postgis3.1
linux·运维·docker·postgresql·centos
思扬09286 小时前
Docker多阶段构建深度优化指南:从GB到MB的镜像瘦身革命
运维·docker·容器
镰圈量化7 小时前
Django 实现服务器主动给客户端发送消息的几种常见方式及其区别
服务器·django·sqlite
xixingzhe29 小时前
docker转移镜像
运维·docker·容器
backRoads9 小时前
docker部署springboot(eureka server)项目
spring boot·docker·eureka
你那是什么调调10 小时前
Docker 中运行 JAR 文件
docker·容器·jar
细心的莽夫10 小时前
Elasticsearch复习笔记
java·大数据·spring boot·笔记·后端·elasticsearch·docker
程序员阿鹏10 小时前
实现SpringBoot底层机制【Tomcat启动分析+Spring容器初始化+Tomcat 如何关联 Spring容器】
java·spring boot·后端·spring·docker·tomcat·intellij-idea
爱的叹息12 小时前
本地(NAS/服务器)与云端(Docker/Kubernetes)部署详解与对比
服务器·docker·kubernetes