This is only a guide. The final deployment will depend on the services you have setup, settings and more. If you run into trouble check the following guides.
Deploy Django to render - basic guide on deploying Django to render.
Docker deployments - guide on docker deployments
Overview for how this works
Define the web service and other supporting services in the service definition file - render.yaml.
Define and custom build script that will run during deployments. This script includes actions to be performed before deploying to render.com , e.g. collect staticfiles or run migrations.
During deployment render will build the Dockerfile and deploy it based on the service definition.
Example service definition file
services: - type: web name: app-name env: python plan: starter plus # optional; defaults to starter numInstances: 1 domains: # custom domains - your-domain.com region: frankfurt buildCommand: ./ops/deploy/render/build.sh startCommand: 'gunicorn -w 1 -k uvicorn.workers.UvicornH11Worker config.asgi:application --max-requests 1000' envVars: - key: AWS_ENABLED value: True - key: DEBUG value: False - key: DEFAULT_EMAIL value: email@example.com - key: DISABLE_COLLECTSTATIC value: 0 - key: DJANGO_AWS_S3_REGION_NAME value: eu-west-2 - key: DJANGO_AWS_STORAGE_BUCKET_NAME value: advantch - key: DJANGO_SETTINGS_MODULE value: config.settings.production - key: TENANT_MODE value: 2 - key: WEB_CONCURRENCY value: 3 - key: SENDGRID_API_KEY sync: false - key: DATABASE_URL fromDatabase: name: postgres-advantch-db property: connectionString - key: REDIS_URL fromService: type: redis name: service property: connectionString - type: worker name: huey env: python startCommand: python manage.py run_huey branch: staging plan: starter region: frankfurt envVars: .... include the same variables as you included in the web service.
in this example we are deploying two services, the web app and a worker.
the worker does not include a
make sure to include the necessary variables.
Example build script definition
#!/bin/bash set -o errexit set -o pipefail set -o nounset pip3 install --upgrade pip pip3 install -r ./requirements/production.txt python manage.py collectstatic --noinput python manage.py migrate
Before checking it into code, make sure the script is executable.
chmod a+x build.sh
Deploying the services