Afsan Abdulali Gujarati
Afsan Abdulali Gujarati

Reputation: 1624

Azure App Services: Stopping site MYSITE because it failed during startup

I had my Django web app running on the Azure App Services using a single docker container instances. However, I plan to add one more container to run the celery service.

Before going to try the compose with celery and Django web app, I first tried using their docker-compose option to run the Django web app before including the compose with celery service.

Following is my docker-compose configuration for Azure App Service

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

However, the only thing that I see in my App Service logs is:

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.

I tried the combination of celery and Django app using docker-compose on my LOCAL environment and it seems to be working as expected. Following is the docker-compose file that I am using to run it on local:

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

What am I missing? I have checked multiple SO questions but they are all left without an answer. I can provide more details if required.

P.S. there's an option to run both Django and Celery in the same container and call it a day, but I am looking for a cleaner and scalable solution.

Upvotes: 4

Views: 7333

Answers (2)

sad33
sad33

Reputation: 51

You have to change port because Azure does not support multi container app on port 8000.

Exemple of Configuration-file.yaml

version: '3.3'
services:
   api:
 image: containerdpt.azurecr.io/xxxxxxx
 command: python manage.py runserver 0.0.0.0:8080
 ports:
   - "8080:8080"

Upvotes: 3

Bryan Trach-MSFT
Bryan Trach-MSFT

Reputation: 880

Is there any chance you can time the startup of your site? My first concern with this is it's not starting up within 230 seconds or an external dependency such as the celery container is not ready within 230 seconds.

To see if this is the issue, can you try raising the startup time?

Set the WEBSITES_CONTAINER_START_TIME_LIMIT App Setting to the value you want.

Default Value = 230 Sec.

Max Value= 1800 Sec

Upvotes: 2

Related Questions