在使用弹性豆stalk上使用docker-compose部署Django项目时,如何为芹菜容器进行专用实例?
我有一个使用芹菜进行大量计算的网络应用。它是使用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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论