我使用单个 Docker 容器实例在 Azure 应用服务上运行我的 Django Web 应用程序。不过,我计划再添加一个容器来运行 celery 服务。
在尝试使用 celery 和 Django Web 应用程序进行撰写之前,我首先尝试使用他们的 docker-compose 选项来运行 Django Web 应用程序,然后再使用 celery 服务进行撰写。
以下是我的 Azure 应用服务的 docker-compose 配置
version: '3.3'
services:
web:
image: azureecr.azurecr.io/image_name:15102020155932
command: gunicorn DjangoProj.wsgi:application --workers=4 --bind 0.0.0.0:8000 --log-level=DEBUG
ports:
- 8000:8000
但是,我在应用服务日志中看到的唯一内容是:
2020-10-16T07:02:31.653Z INFO - Stopping site MYSITE because it failed during startup.
2020-10-16T13:26:20.047Z INFO - Stopping site MYSITE because it failed during startup.
2020-10-16T14:51:07.482Z INFO - Stopping site MYSITE because it failed during startup.
2020-10-16T16:40:49.109Z INFO - Stopping site MYSITE because it failed during startup.
2020-10-16T16:43:05.980Z INFO - Stopping site MYSITE because it failed during startup.
我在本地环境中使用 docker-compose 尝试了 celery 和 Django 应用程序的组合,它似乎按预期工作。 以下是我用来在本地运行它的 docker-compose 文件:
version: '3'
services:
web:
image: azureecr.azurecr.io/image_name:15102020155932
build: .
command: gunicorn DjangoProj.wsgi:application --workers=4 --bind 0.0.0.0:8000 --log-level=DEBUG
ports:
- 8000:8000
env_file:
- .env.file
celery:
image: azureecr.azurecr.io/image_name:15102020155932
build: .
command: celery -A DjangoProj worker -l DEBUG
depends_on:
- web
restart: on-failure
env_file:
- .env.file
我错过了什么? 我已经检查了多个SO问题,但它们都没有答案。 如果需要,我可以提供更多详细信息。
附注有一个选项可以在同一个容器中运行 Django 和 Celery,然后就到此为止,但我正在寻找一个更干净且可扩展的解决方案。
最佳答案
您必须更改端口,因为 Azure 不支持端口 8000 上的多容器应用。
配置文件.yaml 示例
version: '3.3'
services:
api:
image: containerdpt.azurecr.io/xxxxxxx
command: python manage.py runserver 0.0.0.0:8080
ports:
- "8080:8080"
关于python - Azure 应用服务 : Stopping site MYSITE because it failed during startup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64393663/