Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 949
Afsan Abdulali Gujarati Avatar asked Oct 19 '25 05:10

Afsan Abdulali Gujarati


2 Answers

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"
like image 80
sad33 Avatar answered Oct 21 '25 18:10

sad33


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

like image 37
Bryan Trach-MSFT Avatar answered Oct 21 '25 19:10

Bryan Trach-MSFT



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!