在使用弹性豆stalk上使用docker-compose部署Django项目时,如何为芹菜容器进行专用实例?

发布于 2025-02-08 05:40:03 字数 1434 浏览 2 评论 0原文

我有一个使用芹菜进行大量计算的网络应用。它是使用docker-compose用弹性豆stalk部署在AWS上的。经纪人是Amazon SQS,而Redis则用作结果后端。

这是码头组合文件以了解结构:

version: '3.8'

volumes:
  data:
    driver_opts:
      type: "nfs"
      o: "addr=XXXXXXXXXXXXXXXXXXXXXXX,rw,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"
      device: ":/"
  static:
services:
    web:
        build: ./web
        command: >
            bash -c "python3 manage.py migrate
            && python3 manage.py collectstatic  --noinput
            && gunicorn APPNAME.asgi:application --access-logfile '-' --error-logfile '-' --capture-output --enable-stdio-inheritance -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000"
        volumes:
          - data:/home/webserver/data/
          - static:/home/webserver/static/
        ports:
          - "8000:8000"
        depends_on:
          - redis
    celery:
        build: ./web
        command: celery -A APPNAME worker -Ofair -l INFO
        volumes:
          - data:/home/webserver/data/
        depends_on:
          - web
    redis:
        image: redis:6.2.6-alpine
        ports:
          - "6379:6379"
    nginx:
        build : ./nginx
        ports:
          - "80:80"
        depends_on:
          - web
        volumes:
      - static:/home/webserver/static/

它运行良好,包括芹菜任务。现在,我想将Web/redis/nginx服务与具有自己专用实例的芹菜容器分开,并具有扩展功能。有没有正确的方法(使用CLI)?我应该考虑单独的Beanstalk应用程序吗?

I have a web-app that uses celery for heavy calculations. It was deployed on AWS with elastic beanstalk, using docker-compose. The broker is Amazon SQS, while redis is used as result backend.

Here is the docker-compose file to understand the structure:

version: '3.8'

volumes:
  data:
    driver_opts:
      type: "nfs"
      o: "addr=XXXXXXXXXXXXXXXXXXXXXXX,rw,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"
      device: ":/"
  static:
services:
    web:
        build: ./web
        command: >
            bash -c "python3 manage.py migrate
            && python3 manage.py collectstatic  --noinput
            && gunicorn APPNAME.asgi:application --access-logfile '-' --error-logfile '-' --capture-output --enable-stdio-inheritance -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000"
        volumes:
          - data:/home/webserver/data/
          - static:/home/webserver/static/
        ports:
          - "8000:8000"
        depends_on:
          - redis
    celery:
        build: ./web
        command: celery -A APPNAME worker -Ofair -l INFO
        volumes:
          - data:/home/webserver/data/
        depends_on:
          - web
    redis:
        image: redis:6.2.6-alpine
        ports:
          - "6379:6379"
    nginx:
        build : ./nginx
        ports:
          - "80:80"
        depends_on:
          - web
        volumes:
      - static:/home/webserver/static/

It works well, including the celery tasks. Now, I would like to separate the web/redis/nginx services from the celery containers that would have their own dedicated instances, with the ability to scale. Is there a proper way to do that (using CLI)? Should I consider separate beanstalk applications?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文