Azure app service container fails to start/restarts repeatedly on custom startup script
I was trying to add a cronjob in my django app hosted in Azure App Service using django-crontab
. For that I decided to use custom startup script. I have script like this which will take default original startup script, add my custom code just before it starts the server and add that server starting line. I have this script in /home/start.sh
#!/bin/sh
# Copy all necessary steps defined from deployment
cat /opt/startup/startup.sh | head -n -1 > startup.sh
# Add your custom command here
echo '
python manage.py crontab add
service cron restart' >> startup.sh
# Add last line that'll startup the server
cat /opt/startup/startup.sh | tail -n 1 >> startup.sh
chmod +x startup.sh
./startup.sh
It successfully creates a startup.sh
script containing my custom code and the original one. When I run this script from azure's webssh
, it runs without error after I specify unoccupied port. But if I point this as /home/start.sh
in app service general settings' Startup Command
, the container in loop restarts infinitely. This is the logstream logs:
2022-05-31T15:34:29.660568267Z
2022-05-31T15:34:29.660605269Z _____
2022-05-31T15:34:29.660609769Z / _ \ __________ _________ ____
2022-05-31T15:34:29.660613269Z / /_\ \___ / | \_ __ \_/ __ \
2022-05-31T15:34:29.660616769Z / | \/ /| | /| | \/\ ___/
2022-05-31T15:34:29.660620169Z \____|__ /_____ \____/ |__| \___ >
2022-05-31T15:34:29.660623970Z \/ \/ \/
2022-05-31T15:34:29.660627370Z
2022-05-31T15:34:29.660630770Z A P P S E R V I C E O N L I N U X
2022-05-31T15:34:29.660634070Z
2022-05-31T15:34:29.660637270Z Documentation: http://aka.ms/webapp-linux
2022-05-31T15:34:29.660640471Z Python 3.9.7
2022-05-31T15:34:29.660643671Z Note: Any data outside '/home' is not persisted
2022-05-31T15:34:30.192986324Z Starting OpenBSD Secure Shell server: sshd.
2022-05-31T15:34:30.354326537Z Site's appCommandLine: /home/start.sh
2022-05-31T15:34:30.354364939Z Checking of /home/start.sh is a file
2022-05-31T15:34:30.372725285Z App command line is a file on disk
2022-05-31T15:34:30.375817644Z App command line is a shell script, will execute this script as startup script
2022-05-31T15:34:30.395024234Z App will launch in debug mode
2022-05-31T15:34:30.734903645Z Starting periodic command scheduler: cron.
2022-05-31T15:34:30.734932946Z Launching oryx with: create-script -appPath /home/site/wwwroot -output /opt/startup/startup.sh -virtualEnvName antenv -defaultApp /opt/defaultsite -userStartupCommand /home/start.sh -debugAdapter ptvsd -debugPort 49494
2022-05-31T15:34:30.908220523Z Found build manifest file at '/home/site/wwwroot/oryx-manifest.toml'. Deserializing it...
2022-05-31T15:34:30.927753703Z Build Operation ID: |CiF5O57yMtg=.cf472d5_
2022-05-31T15:34:30.927928512Z Oryx Version: 0.2.20220308.4, Commit: c92fa6a2d6fc14dc9646f80e2bb2e393a5cdc258, ReleaseTagName: 20220308.4
2022-05-31T15:34:30.928010416Z Output is compressed. Extracting it...
2022-05-31T15:34:30.938706553Z Extracting '/home/site/wwwroot/output.tar.gz' to directory '/tmp/8da421eaec4b4f3'...
2022-05-31T15:34:38.061772540Z App pat
2022-05-31T15:38:24.682Z ERROR - Container anishchapagai-dev_2_1ee84ab5 for site anishchapagai-dev did not start within expected time limit. Elapsed time = 230.3460143 sec
h is set to '/tmp/8da421eaec4b4f3'
2022-05-31T15:34:39.469336718Z Writing output script to '/opt/startup/startup.sh'
2022-05-31T15:34:39.790181206Z Using packages from virtual environment antenv located at /tmp/8da421eaec4b4f3/antenv.
2022-05-31T15:34:39.797643317Z Updated PYTHONPATH to ':/opt/startup/app_logs:/opt/startup/code_profiler:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages'
2022-05-31T15:34:39.940459648Z Using packages from virtual environment antenv located at /tmp/8da421eaec4b4f3/antenv.
2022-05-31T15:34:39.947849858Z Updated PYTHONPATH to ':/opt/startup/app_logs:/opt/startup/code_profiler:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages'
2022-05-31T15:34:47.222311959Z System check identified some issues:
2022-05-31T15:34:47.222344459Z
2022-05-31T15:34:47.222349359Z WARNINGS:
2022-05-31T15:34:47.222353159Z portfolio.Contacts: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:47.222357659Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:47.222362059Z portfolio.Events: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:47.222365859Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:47.222369659Z portfolio.Me: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:47.222373259Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:47.222376959Z portfolio.Projects: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:47.222380659Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:47.445542163Z adding cronjob: (2fd8991440f0258c85f4cd11d634fb1b) -> ('*/1 * * * *', 'aniwatch.database_update.updateHot')
2022-05-31T15:34:48.020611750Z Starting periodic command scheduler: cron.
2022-05-31T15:34:48.161804675Z Using packages from virtual environment antenv located at /tmp/8da421eaec4b4f3/antenv.
2022-05-31T15:34:48.161832075Z Updated PYTHONPATH to ':/opt/startup/app_logs:/opt/startup/code_profiler:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages'
2022-05-31T15:34:50.432748995Z System check identified some issues:
2022-05-31T15:34:50.432787796Z
2022-05-31T15:34:50.432793096Z WARNINGS:
2022-05-31T15:34:50.432797896Z portfolio.Contacts: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:50.432802196Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:50.432807396Z portfolio.Events: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:50.432817396Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:50.432821796Z portfolio.Me: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:50.432837496Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:50.432841396Z portfolio.Projects: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:50.432844896Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:50.562541651Z removing cronjob: (2fd8991440f0258c85f4cd11d634fb1b) -> ('*/1 * * * *', 'aniwatch.database_update.updateHot')
2022-05-31T15:34:50.562596151Z adding cronjob: (2fd8991440f0258c85f4cd11d634fb1b) -> ('*/1 * * * *', 'aniwatch.database_update.updateHot')
2022-05-31T15:34:51.117764821Z Starting periodic command scheduler: cron.
2022-05-31T15:34:51.315767266Z Using packages from virtual environment antenv located at /tmp/8da421eaec4b4f3/antenv.
2022-05-31T15:34:51.315804068Z Updated PYTHONPATH to ':/opt/startup/app_logs:/opt/startup/code_profiler:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages'
2022-05-31T15:34:53.409981827Z System check identified some issues:
2022-05-31T15:34:53.410015829Z
2022-05-31T15:34:53.410020929Z WARNINGS:
2022-05-31T15:34:53.410024629Z portfolio.Contacts: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:53.410028529Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:53.410034730Z portfolio.Events: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:53.410038530Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:53.410042230Z portfolio.Me: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:53.410050630Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:53.410054630Z portfolio.Projects: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
2022-05-31T15:34:53.410058231Z HINT: Configure the DEFAULT_AUTO_FIELD setting or the PortfolioConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
2022-05-31T15:34:53.497083311Z removing cronjob: (2fd8991440f0258c85f4cd11d634fb1b) -> ('*/1 * * * *', 'aniwatch.database_update.updateHot')
2022-05-31T15:34:53.497119512Z adding cronjob: (2fd8991440f0258c85f4cd11d634fb1b) -> ('*/1 * * * *', 'aniwatch.database_update.updateHot')
And this removing and adding cronjob repeats a lot and finally.
2022-05-31T15:38:26.641616478Z Updated PYTHONPATH to ':/opt/startup/app_logs:/opt/startup/code_profiler:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages:/tmp/8da421eaec4b4f3/antenv/lib/python3.9/site-packages'
2022-05-31T15:38:27.826Z ERROR - Container anishchapagai-dev_2_1ee84ab5 didn't respond to HTTP pings on port: 8000, failing site start. See container logs for debugging.
2022-05-31T15:38:33.456Z INFO - Starting container for site
2022-05-31T15:38:33.465Z INFO - docker run -d --expose=8000 --name anishchapagai-dev_1_1734f627 -e WEBSITE_SITE_NAME=anishchapagai-dev -e WEBSITE_AUTH_ENABLED=False -e PORT=8000 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=anishchapagai-dev.azurewebsites.net -e WEBSITE_INSTANCE_ID=9190fff89a3687212f4baaa07d79a6e9f59d64ff47079f52822fd309ff9ab66e -e WEBSITE_USE_DIAGNOSTIC_SERVER=False appsvc/python:3.9_20220315.5 /home/start.sh
2022-05-31T15:38:33.466Z INFO - Logging is not enabled for this container.
Please use https://aka.ms/linux-diagnostics to enable logging to see container logs here.
2022-05-31T15:38:40.624Z INFO - Initiating warmup request to container anishchapagai-dev_1_1734f627 for site anishchapagai-dev
2022-05-31T15:38:56.888Z INFO - Waiting for response to warmup request for container anishchapagai-dev_1_1734f627. Elapsed time = 16.2639002 sec
2022-05-31T15:39:12.898Z INFO - Waiting for response to warmup request for container anishchapagai-dev_1_1734f627. Elapsed time = 32.274493 sec
What am I missing?