如何使用 docker 部署 django-q Worker?

ond*_*dos 2 django docker-compose django-q

假设这个简单的 docker-compose 文件。

version: "3.9"
   
services:  
  redis:
    image: redis:alpine
    ports:
      - 6379:6379

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - redis
Run Code Online (Sandbox Code Playgroud)

如何添加 django-q Worker 来处理web容器中的任务?

我可能可以使用不同的命令构建相同的图像,例如,python manage.py qcluster但我认为这个解决方案并不优雅。您能建议一些方法来做到这一点吗?

Iva*_*ile 5

您可以做的最简单的事情可能就是为 qcluster 添加新集群。像这样的东西:

version: "3.9"
   
services:  
  redis:
    image: redis:alpine
    ports:
      - 6379:6379

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - redis
  djangoq:
    build: .
    command: python manage.py qcluster
    volumes:
      - .:/code
    ports:
      - "8000:8001"
    depends_on:
      - redis
Run Code Online (Sandbox Code Playgroud)

  • 好吧,这取决于您的 qcluster 设置...这只是一个示例:) 是的,您可能需要将 djangoq 的 TCP 端口更改为与 Web TCP 端口不同。:) 我编辑回复。谢谢@DayanneGarcia (2认同)