Azure Differences to Consider
Understanding the Backend Deployment
I'll keep this section short.
Azure utilizes Kudu as the architecture for your Docker container. With a standard application plan (Anything higher than B1) you can interact with the OS directly (Upload/Download files, etc.).
Since i'm approaching this from a hobbyist perspective, we will be utilizing the B1 plan.
If you need external storage and do not want to mount your data on the Kudu instance directly, you will need to deploy an Azuree Files Share and update your docker-compose.yml to utilize the Azure_Files driver with volume mounts.
Understanding the Environment Variables
Azure utilizes three very specific variables that will impact your deployment if not set correctly.
WEBSITES_ENABLE_APP_SERVICE_STORAGE
By default when you create an instance this is set to False. If you do not enable this to True, your files will be written to a temp directory on the Kudu OS. When the application restarts, you start from scratch.
WEBSITES_PORT
When the docker container is deployed, if this is not specified then container will fail to start. Kudu pings the container of port 80 and if it cannot communicate with it, it will fail.
${WEBAPP_STORAGE_HOME}
This variable correalates to the /home directory on your Kudu instance. Any volumes you try and mount need to be prefaced with this if you are using container storage.
Example
volumes:
- ${WEBAPP_STORAGE_HOME}/database:/config
This will create a folder under /home called database to be the volumee for the container.