我正在尝试将我的Django应用程序从Heroku移动到Azure应用程序服务。
该应用程序由Websocket和Rest API组成。
因此,应用程序的 Web 部分在daphneWeb 服务器上运行,而工作线程部分在芹菜上运行。
在 Heroku 中,我的 Procfile 看起来像
web: daphne backend.asgi:application --port $PORT --bind 0.0.0.0 -v 0
worker: celery worker -A backend --loglevel=debug --concurrency=8
当我在 Azure 应用程序服务上尝试相同的操作时,他们提供了一个启动命令来在构建后启动服务器。
我有 Web 和工作线程命令来运行服务器。我尝试使用 sh 文件来执行 Web 和工作命令。但它行不通
所以以下是我面临的问题
- 达芙妮服务器命令在 azure 中不起作用,但是当我更改它时 到古尼角兽它可以工作[但没有WebSocket支持:(通过使用枪角兽]
- 另外,我不知道如何在 azure 应用服务中运行 Web 和辅助角色,因为它们有 只有一个启动命令选项
欢迎任何帮助或指导
提前感谢.....
我通过使用基本的DockerFile和一个简单的&
选项得到了解决方案。 我已经附加了我在 azure 中使用的自定义 DockerFile
FROM python:3.7
RUN mkdir -p /opt/services/app/src
WORKDIR /opt/services/app/src
ADD . /opt/services/app/src
RUN pip install -r requirements.txt
EXPOSE 8000
CMD python manage.py collectstatic --no-input
CMD python manage.py migrate
CMD daphne backend.asgi:application --port 8000 --bind 0.0.0.0 -v 0 & celery worker -A backend --loglevel=debug --concurrency=8