
Learn Terraform as code to provision cloud resources, deploy dockerized apps on Render, and implement CI/CD with GitHub Actions for automated workflows.
Explore the course overview and prerequisites for Python Django DevOps, set up the environment, build a Django starter project, dockerize, use Render and Terraform, and implement CI/CD practices.
Use the Q&A forum for questions and receive instructor support, while prioritizing independent problem solving and posting unresolved issues in a Q&A thread.
Structure your sort process for this course by taking it one step at a time, setting a start and end goal, and staying steady to avoid overdoing for long-term knowledge.
Install and run the final project source code on Windows by creating a virtual environment, installing dependencies, and launching the Django server; review Terraform, workflows, and GitHub secrets.
Install and run the Eden Source final project on macOS by creating a virtual environment, installing requirements, and launching the Django dev server in Visual Studio Code.
Install Python on Windows with admin privileges and add it to PATH, then install Visual Studio Code for Windows and launch the editor.
Install Python on macOS, verify the installed version using the terminal, then download and install Visual Studio Code for mac.
Set up a Django project on Windows by creating a dev folder, configuring and activating a virtual environment, installing Django, and starting the server.
Set up a Django project on macOS by creating and activating a virtual environment, installing Django, and running manage.py to view localhost.
Set up a new django app by applying default migrations, creating an app (crm), adding it to installed apps, and running the server to verify setup.
Create a base template, url and view in a Django app by configuring app-level templates, wiring urls with include, and rendering an index.html through a simple home view.
Create a Django model named Daily Note in models.py using a CharField titled title with max length 100, run migrations and migrate to SQLite, and register the model in admin.
Create a super user with python manage.py createsuperuser, run the server with python manage.py runserver, and access the admin at /admin to manage the crm app's daily note model.
Build a basic note submission form by creating daily note form in forms.py, linking it to the daily note model, and exposing the title field for input.
Learn how to build a Django note submission form, handle post requests, validate and save DailyNoteForm data to SQLite with CSRF protection, and redirect to home while displaying notes.
Create a base directory static folder for css and javascript, then update settings.py with static_url and staticfiles_dirs pointing to base_dir/static to serve static files in Django.
Set up static/css and static/js in a Django app by loading static, and linking styles.css and app.js in index.html, then test locally.
Style a Django form with CSS to add a bordered, padded container and a blue hover button, testing static files in production for CI/CD workflows.
Docker packages applications into containers that run on any machine. Build a Dockerfile, create an image, push Python, Node.js, or C++ apps to a repository, pull, and run containers.
Install and set up Docker Desktop by downloading the correct installer for your operating system, running the setup wizard, and launching the Docker engine to manage containers and images.
Install Gunicorn to bridge your dockerized Django app with Render cloud servers, ensuring the Python dependency is added via pip and ready for deployment.
Generate a requirements.txt from your virtual environment to list all project dependencies for building a dockerized Django app; use pip freeze and place the file in your base project directory.
Create a docker file to build a Django app image from a Python base, set env vars, install dependencies, copy files, expose port 8000, and run gunicorn.
Add a dockerignore to exclude unnecessary items from docker builds, including the dockerfile itself and the dockerignore. Prepare to add an env file and sensitive data before deployment.
Build a Docker image from a Dockerfile using Docker build and tag it for your Django app. The session covers Python 3.13, installing requirements, and exporting the image.
Learn to run a Docker container from an image, enable detached mode, bind port 8000, and access the dockerized Django app in the browser.
Stop and delete containers and images in Docker Desktop, then run Docker system prune to remove stop containers, networks, dangling images, and unused build cache for a fresh start.
Install Psycopg2 binary, the Python Postgres database adapter, to connect to a Postgres database for production. This session prepares a mock production setup and outlines future infrastructure as code concepts.
Configure a production postgres database markup in django settings.py, transitioning from sqlite and outlining engine, name, user, password, host, and port for future reference.
Use django-environ to configure environment variables in a Django app by creating a .env file, loading it in settings.py, safeguarding the secret_key, and testing with the server.
Set up additional deployment configurations in settings.py by turning off debug, configuring allowed hosts with the render domain, and preparing CSRF trusted origins for secure post requests.
Enable white noise to serve static assets in production for a Django app, configuring middleware, static root, and compression with caching. Run manage.py collect static to publish updated files.
Learn that a container registry is a storage system for container images, like a GitHub repository for Docker images, with examples such as Amazon ECR and Google Artifact Registry.
Sign up for a free GitHub account to access the GitHub container registry for pushing and storing Docker images as part of your DevOps workflow.
Generate a personal access token to authenticate with the GitHub container registry, name it docker image permissions, set a 90-day expiry, and grant write and delete access to packages.
Log in to the github container registry with docker login ghcr using your username and personal access token, then push images locally and plan to use environment variables for ci.
Update requirements.txt with the latest packages, including Django, by running pip freeze > requirements.txt, and ignore the .env file in dockerignore to protect data in the Docker image.
Build a production Docker image by adding an entrypoint.sh to run migrations, collect static files, and launch Gunicorn with three workers; set the entrypoint as executable in the Dockerfile.
Demonstrates building a docker image on macOS M chips using docker build with --platform linux/amd64 and tagging to ghcr, then checking the image in Docker Desktop.
Push a Docker image to GitHub container registry using docker push after logging in, specify the image name and latest tag, and verify the private package in GitHub packages.
Explore cloud service models including IaaS, PaaS, and infrastructure as code, detailing virtual machines, managed platforms, and code-driven resource provisioning for web services and databases.
Learn how to integrate platform as a service (PaaS) by deploying a Django app on render, which automatically manages resources and exposes the app on the web.
Learn to implement infrastructure as code using Terraform to provision a virtual server and resources. Deploy a Django application on Render and access the live site.
Set up a Render account via GitHub, verify your email, and sign in to the Render dashboard as a prelude to manual Docker deployment and infrastructure as code for ci/cd.
Deploy a dockerized Django app to render by supplying a private image with credentials, configuring environment variables, and running migrations, collecting static files, and gunicorn, then access the admin URL.
Learn how to update Django app manually, configure allowed hosts and CSRF trusted origins, build and deploy Docker images to Render, and verify a working SQLite database and admin access.
Configure a production PostgreSQL database for a Django app, migrate from SQLite, manage the host, port, and environment variables, create a production superuser, and validate deployment via Docker-based processes.
Delete services, databases, and credentials to clean up resources, revert to SQLite for testing, and prepare for infrastructure as code with Render and a rebuilt Docker image.
Discover how Terraform describes cloud infrastructure in code to automatically provision servers, databases, and networks, integrating with Render so resources are created without manual dashboards.
Download and install Terraform on Windows, extract the zip, place it in program files, update system PATH, restart, and verify installation with Terraform version.
Install terraform on macOS by downloading the macOS binary (amd64), moving it to /usr/local/bin, updating the path, and verifying the installation with terraform --version.
Add a payment method in Render to enable infrastructure as code with Terraform, using a starter web service; the database remains free.
Obtain your Render API key from account settings, securely store it, and use a curl get request to fetch your owner ID from /v1/owners with bearer authentication for Terraform-driven infrastructure.
Define cloud resources in code using Terraform with the Render OS provider, dockerizing a private image and configuring web services, databases, and registry credentials.
Build cloud infrastructure with Terraform to provision render web services. Configure render registry credentials and API key authentication for accessing a private docker image from GitHub container registry.
Configure a Render Postgres database in Terraform, using the free tier in Oregon with version 16. Set resource name, database name, and user, and disable high availability.
Configure and reference environment variables in Terraform by creating a variables file, wiring them in main.tf with var.* references, and export them to a render web service via env_vars.
Compare platform as a service and infrastructure as code with a visual walkthrough of render and terraform, detailing an api key, owner id, and a Postgres setup.
Prepare and productionize a Django Docker image by auditing settings, excluding secrets, and configuring a production database later. Build, tag, and push the image to gh.io/your-username container registry.
Adopt best practices for database value naming in secrets files, using lowercase letters and underscores. Apply conventions for infrastructure as a service and render dashboards.
Learn to create infrastructure and deploy your application using infrastructure as code with terraform init, plan, and apply on Render, provisioning a web service and production database.
Configure the postgres database and deployment settings by uncommenting postgres in Settings.py, updating env with db name, user, password, host, port, and allowed hosts and CSRF trusted origins for render.
Configure Postgres environment variables in Render, save, and redeploy to apply updates. Use the app shell to run migrations, create a superuser, and confirm database connectivity.
Utilize Render's shell environment to run Django migrations, create a superuser in the Docker entrypoint, verify admin access, and manage redeployments with a deploy key.
Change small parts of the app and trigger redeployments using the deploy hook, avoiding docker rebuilds, then automate deployment via the render API with CI/CD and GitHub Actions.
Explore post-deployment distinctions between platform as a service and infrastructure as code using Terraform and render, including registry credentials, environment variables, and a Postgres database in Oregon.
Explore the Terraform directory, its lock and state files, and how Terraform stores internal plugins and tracks infrastructure to keep setups consistent.
Welcome! I'm here to help you to master DevOps with Django, where you'll learn how to automate deployments, manage infrastructure with code and build a complete CI/CD pipeline.
-- Please read carefully --
This course is not for complete beginners. You should already have a basic understanding of Django and be comfortable with it.
This course focuses on developer-friendly DevOps workflows for deploying and managing Django web apps with Terraform, Docker, GitHub Actions, and Render. It doesn’t dive into Kubernetes or enterprise DevOps systems — instead, it gives you a solid, real-world foundation in DevOps practices from code to cloud.
This course is designed for developers who want to integrate DevOps principles into their Django applications. If you have basic Django knowledge and want to level up your skills, this course is for you! The focus is on Infrastructure as Code (IaC) and CI/CD. You’ll learn how to Dockerise Django applications, deploy them using Terraform, and automate workflows with GitHub Actions.
Course breakdown:
We will start by creating a simple Django project and then progressively integrate DevOps tools and best practices to automate deployments
Master dockerisation – Containerise your Django project for seamless deployment and scalability using Docker
Utilise GitHub Container Registry – Efficiently store, manage, and deploy Docker images directly from GitHub’s container registry
Secure environment variables – Learn best practices for managing secrets and environment configurations in production
Understand cloud deployment models – Explore the differences between IaaS, PaaS and IaC to make informed deployment decisions
Deploy Django with Terraform to Render – Leverage Infrastructure as Code (IaC) to automate and manage cloud infrastructure for Django applications. We will utilise the IaC format of Render as our cloud service provider
Set Up a production-ready database – Configure and integrate PostgreSQL in the cloud for a scalable Django backend
Build a CI/CD pipeline – Design and implement a fully automated continuous integration & deployment workflow using GitHub Actions
Monitor Django applications – Implement basic logging and monitoring with Render to track application performance
Optimise performance & error tracking – Enhance reliability with effective logging, error tracking and monitoring strategies
A structured, hands-on learning experience:
> The course is structured in a logical and progressive way – not just random lectures scattered everywhere.
> It starts with the basics and gradually builds up to full automation.
> This course is packed with hands-on examples, code snippets and real-world applications.
> We will learn how to use Terraform, Docker, and GitHub Actions to create an end-to-end DevOps pipeline for Django.
Your instructor:
My name is Arno Pretorius. I'm a qualified IT teacher who has taught programming both in-person and online. My main passions are teaching and technology, so I thought why not just combine the best of both worlds to create something truly amazing and valuable. Over the years, I have created and deployed many real-world Django-based applications, including a job portal for university graduates and an exclusive social network.
I'm a software developer, an AWS Solutions Architect and Developer associate. I have a keen interest in cloud computing, web development and everything that relates to programming and technology.
So, let's go and become fluent in Django, along with an extra service or two.
Trust me you are in good hands!
This course also comes with:
- 8 + hours of on-demand video
- Full lifetime access
- A Udemy certificate of completion
- Access on mobile and TV
Join me in this course if you want to master DevOps with Django!