
Kick off your cloud and DevOps journey with a hands-on introduction that builds a full-stack app, teaches containerization with Docker, and provisions infrastructure on Google Cloud Platform using Deployment Manager.
Discover how Docker packages applications with dependencies into containers. Run them consistently across environments and isolate multiple versions on one machine, then remove them safely.
Compare containers and virtual machines by highlighting isolation, resource use, startup time, scalability, and portability. Learn how hypervisors manage VMs and why containers start quickly and share the host OS.
Install Docker on your system by following the Docker docs, choosing your operating system, and launching Docker Desktop; verify with Docker version and test with docker run hello world.
Explore Docker images as lightweight, standalone packages and learn to search, pull, and list images from Docker Hub, including latest and 24.04 tags, and inspect image layers.
Run and manage Docker containers by launching Ubuntu images with an interactive Bash terminal. Inspect the OS release and clean up by removing stopped containers before deleting images.
Deploy a simple httpd web server in a Docker container, map host port 8080 to container port 80, run in background, and edit the HTML with docker exec and nano.
Create a Dockerfile to build a Python image, copy files, set the working directory, and configure cmd to run app.py using a slim base image.
Explore a demo web app for mapping gps points with name and date. See how the frontend serves static files with nginx and the api stores data in mariadb.
Learn to containerize a demo application, configure environment variables from the Readme, and deploy locally with Docker and Docker Compose, then deploy on Google Cloud Platform in collaboration with developers.
Install Git on your system using the appropriate method for Mac, Windows, or Linux, then clone the repository into a web app folder and open it in VSCode.
Discover how a frontend uses nginx to serve static files, configure port 80, root frontend directory, index files, and location blocks that route requests and handle 404s and favicon.
Learn how to configure an nginx frontend with environment variables, replacing hardcoded parameters with dynamic values via export and substitution, and generate a final nginx configuration for the demo application.
Configure nginx and docker for deploying a frontend app by building an nginx-based image, copying static files, templating nginx.conf with environment variables, and exposing port 80.
Illustrate docker's default bridge network isolation and how port mapping exposes host services. Emphasize inter-container communication using container IPs within the bridge network, not localhost.
Deploy the backend by setting up a MariaDB 10.6 database with env vars for database, user, and password, then build and run a Dockerized database with a persistent volume.
Deploy the API server by building a Python 3.8 environment, installing requirements (MySQL client, Gunicorn), creating a Dockerfile, and exporting environment variables to connect the backend to the database.
Deploy a dockerized django api with gunicorn, run migrations, and configure docker networking. Connect front end to the backend on localhost:8001, test api calls via browser.
Define and manage multiple containers with docker compose by configuring services, ports, environments, and volumes in a single yaml file to simplify building, starting, and maintaining your map application.
Explore YAML format and its use for configuration alongside Docker Compose, compare YAML with JSON, and learn indentation, hyphens, and structures that replace braces and quotes.
Create a docker compose file to run a full-stack map app, defining front-end, back-end, and database services, configuring environment variables, ports, volumes, and startup order.
Learn to drastically reduce backend Docker images with multi-stage builds, from a Python 3.8 builder to a slim final image, and optimize security with a non-root user and minimal dependencies.
Optimize docker compose by moving commands to a shell script in the frontend container and externalizing environment variables with a .env file and env_file for frontend, backend, and database.
Deploy your map application to Google Cloud Platform using VM instances, load balancers, firewalls, and routing, and automate infrastructure with Google Cloud Deployment Manager for production ready deployment.
Create a new GCP account on cloud.google.com to receive $300 free credits, set up an individual payment profile with a credit card, and access the Google Cloud main page.
Describe the global cloud architecture for a fullstack demo app on Google Cloud: two VMs in a VPC, docker compose for frontend and API, external database, and load balancer.
Deploy your first Google Cloud VM, configure a Debian-based instance, install Docker and Docker Compose, open HTTP and API ports, and run a multi-container app via Docker Compose.
Explore GCP networking basics, including VPCs and regional subnets, private service access and VPC peering, and firewall rules that enable internal communication to Cloud SQL via internal IPs.
Create a Cloud SQL MySQL database with private IP in Europe West and enable high availability. Set up a user and database and connect Docker Compose to the internal IP.
Create a new managed instance group using two existing VMs in Europe, map ports 80 and 8001 (http and API), and then create the load balancer.
Create a public facing application load balancer, configure front end and back end, set health checks, and route traffic with two external IPs for ports 80 and 8001.
Explore infrastructure as code to automate provisioning, version control with Git, and deploy scalable resources using Google Cloud Deployment Manager, Terraform, and Ansible.
Install and initialize the Google Cloud CLI across Debian/Ubuntu, Windows, and macOS, ensure Python 3.8 and gcloud init sign-in, then prepare to deploy infrastructure with Deployment Manager.
Deploy a vm using Google Cloud Deployment Manager by configuring gcloud, enabling the API, and creating a deployment.yaml for a compute v1 instance (e2-small) in Europe West, Debian 11.
Deploy a custom regional network with auto subnet, deploy a VM via deployment manager referencing the network, and configure a firewall to expose HTTP (80), SSH (22), and API (8001).
Configure a startup script in Google Cloud deployment manager instance metadata to automatically install Docker on Debian at first boot, and recreate the VM to rerun.
Create scalable VM fleets using instance templates and instance group managers, configuring machine type, target size, zone, and named ports to deploy multiple identical VMs.
Learn to build a Google Cloud load balancer with deployment manager by creating frontend and backend services, health checks, and routing rules for the web UI and API.
Deploy and configure a Cloud SQL database instance using Deployment Manager. Allocate a private IP range and establish VPC peering with service networking, then create the MySQL database and user.
Learn how template modules replace sprawling config files with reusable, parameterized building blocks for multi-environment cloud deployments. Use Jinja templates in Google Cloud to ensure consistency, scalability, and easy maintenance.
Break down deployment.yaml into modular jinja templates for vm network, firewall, load balancer, and mysql resources, using imports and variables in a main yaml.
The lecture demonstrates using properties in template modules to configure environment-specific parameters—machine type, zone, region, environment, replicas, and database names and users.
Secure your database credentials with Google Cloud Secret Manager by creating secrets for the db user, password, and database name, with encryption, rotation, and versioned access.
Automate deployments with bash scripts to ensure consistency and speed, using gcloud deployment manager to create or update deployments based on their existence, and manage errors by redirecting output.
Securely deploy database credentials by retrieving secrets from secret manager and injecting them into the deployment yaml with gcloud deployment manager, using set/gsed and trap cleanup.
Automate database deployment by waiting for ongoing sql operations with gcloud sql operations list and wait, using xargs to apply waits and enforce database-before-user sequencing.
Learn to enhance a bash deployment script by using arguments for variables, validating input, avoiding hard-coded environments, and dynamically applying environment settings before deploying to prod.
Learn to implement environment-aware deployments by adding an environment property to resources in yaml and jinja templates, update deploy scripts, and run concurrent dev, staging, and production environments.
Explore continuous integration and delivery concepts, automate testing and building when code changes, and deploy via GitLab CI, leveraging built-in runners and scalable pipelines for faster, error-reduced releases.
Learn how GitLab CI defines jobs and stages, uses artifacts and container environments, runs parallel jobs within a stage, and sequences build, test, and deploy in pipelines.
Create a public GitLab project and configure a multi-stage gitlab-ci.yml with build, test, and deploy stages using a Python alpine image, then commit, push, and run pipelines.
Learn how code quality and code coverage tests drive reliable Python projects by using Flake8 to enforce pep8, catch errors, and measure cyclomatic complexity in a CI pipeline.
Explore unit tests and code coverage, run tests in a container, install dependencies, and enforce an 80% coverage threshold with an HTML report for CI.
Configure ssh to connect to GitLab by generating a key pair, adding the public key to GitLab, and loading the private key into the ssh agent for VSCode pushes.
Learn to integrate code quality and unit tests into a gitlab ci pipeline by configuring a python 3.9 slim container, flake8 checks, complexity thresholds, coverage reporting, and artifacts.
define variables in GitLab CI to set max complexity and min coverage, then reference predefined CI/CD variables and the GitLab Docker registry.
Learn how GitLab runners execute CI/CD jobs with shared and dedicated runners, types shell, docker, and Kubernetes runners, and how pipelines use tags and .gitlab-ci.yml to run in isolated environments.
Install and register GitLab runners on GCP Linux VMs using shell and Docker executors, obtaining tokens from GitLab CI settings and linking to your project.
Build docker images and push them to GitLab's private registry by configuring login, tagging with commit sha and latest, and deploy front end and back end images.
Deploy a fullstack demo app using gitlab ci with images from the gitlab registry, docker compose, and load balancer and cloud sql configurations for a working deployment.
Learn to deploy the application on multiple instances in parallel using GitLab CI's parallel matrix, registering a second runner and ensuring load balancing.
Create a service account, assign the secret accessor role, generate a key, and use this key in GitLab CI pipelines to securely read secrets from Google Cloud Secret Manager.
Use the secure file feature in GitLab CI to upload a key JSON file, authenticate to Google Cloud, and retrieve secrets from Secret Manager for Docker Compose up.
Transform your career with hands-on DevOps and cloud engineering skills that employers actually want. This isn't just another theory-heavy course – it's your practical journey to becoming a confident DevOps engineer.
Why This Course Stands Out
Forget abstract concepts and endless slides. In this course, you'll build a complete full-stack application from scratch and deploy it to production using the exact tools and practices that modern tech companies rely on. Every step is practical, purposeful, and designed to give you real-world experience.
What You'll Build
Through three comprehensive sections, you'll master the complete deployment lifecycle:
Local Development & Containerization
Master Docker fundamentals and build optimized container images
Orchestrate multi-service applications with Docker Compose
Understand frontend-backend architecture and REST API implementation
Learn essential networking concepts and volume management
Cloud Infrastructure with Google Cloud Platform
Set up professional cloud infrastructure using your $300 free GCP credits
Deploy and manage Virtual Machines, VPC Networks, and Load Balancers
Implement secure practices with Cloud SQL and Secrets Manager
Automate infrastructure provisioning using Deployment Manager
Master infrastructure-as-code and bash scripting for automation
CI/CD Implementation with GitLab
Implement professional testing strategies including unit tests and code coverage
Build automated CI/CD pipelines
Configure and manage GitLab runners on cloud instances
Deploy to production with confidence using GitLab CI
Real-World Problem Solving
Throughout the course, you'll develop crucial troubleshooting skills:
Debug deployment issues in real-time
Solve common cloud infrastructure challenges
Learn to read logs and identify root causes
Master the problem-solving mindset that DevOps engineers need daily
What Makes This Course Different
Learn by doing: Build everything yourself with step-by-step guidance
Real-world focus: Every concept is tied to practical, industry-relevant examples
Complete understanding: Learn not just the "how" but the "why" behind each decision
Production-ready skills: Graduate with experience in tools actually used by tech companies
By The End of This Course, You'll Have:
✓ A production-deployed full-stack application for your portfolio ✓ Hands-on experience with Docker, Google Cloud, and GitLab CI/CD ✓ The ability to automate infrastructure deployment ✓ Confidence to tackle DevOps engineer interview questions ✓ Real problem-solving experience in cloud environments
Perfect For:
Developers looking to transition into DevOps roles
IT professionals wanting to modernize their skill set
Students aiming for their first DevOps position
Anyone interested in cloud engineering and automation
Your Investment in Your Future