Terraform Deployment
Use the Terraform deployer when your environment standardizes on Terraform state and you want to keep Simple Chat in the repo's container-based runtime model.
Use Terraform when state-managed infrastructure is already your team standard and you are comfortable separating image publication from infrastructure application.
State-managed infra
Choose this path when Terraform workflows, reviews, and state handling are already part of how your platform team works.
Container runtime by default
The current deployer targets a container-based Azure Linux Web App, so the application runtime still follows the Docker image entrypoint.
Publish the image first
Terraform does not build the application image for you. Publish to ACR first, then point the deployment at the tag you intend to run.
Know when the rule changes
If you ever move Terraform away from containers and into native Python App Service, the startup-command rules change with it.
Terraform is not the image build step
The most common mistake with this path is assuming Terraform also handles the application image lifecycle. It does not. Treat image publication and infrastructure application as two separate steps in the release flow.
When to choose this path
- Your team standardizes on Terraform state and workflows
- You want Terraform-managed infrastructure rather than
azdorchestration - You are comfortable publishing the application image before applying infrastructure
Runtime model
The current Terraform deployer in this repo provisions a container-based Azure Linux Web App.
Current behavior
- Terraform sets the App Service to run the published container image.
- Gunicorn startup is already handled by the container entrypoint in
application/single_app/Dockerfile. - You do not need to configure App Service Stack Settings Startup command for the current Terraform deployment.
If you switch Terraform to native Python later
If you change the Terraform deployment model away from containers and into native Python App Service, deploy the application/single_app folder and use this Startup command:
python -m gunicorn -c gunicorn.conf.py app:app