English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 328 lectures (31h 46m) | 31.57 GB
Build and deploy applications from scratch with Docker, Kubernetes & AWS. The step-by-step guide from Beginner to Pro.
Ready to Level Up Your Deployment Skills?
Whether you’re starting from scratch—no Docker knowledge, no automated pipelines, and no idea how to tackle real-world cloud deployments—or you’ve already run a few containers and want to sharpen your production-ready expertise, this journey is for you. It’s not about where you begin; it’s about how far you can go.
Picture yourself just a few weeks from now: you’ve confidently built and run containerized applications, implemented HTTPS to safeguard user data, fine-tuned asset delivery for peak performance, and set up load balancers to ensure your services stay online under heavy demand. You’ve mastered a streamlined continuous deployment flow from GitHub to AWS App Runner, and explored other production-grade solutions like AWS ECS and Kubernetes to diversify your skill set. Every step of the way, you’re moving closer to running deployments that are efficient, resilient, and scalable.
Gain a Future-Proof Skill Set
This isn’t just a checklist of tasks – it’s a transformation in how you think about delivering software. You’ll gain the confidence to ship code without downtime anxiety, adapt quickly to changing traffic patterns, and smooth out your entire development-to-deployment pipeline. The result? A strong, future-proof skill set that can elevate your career and open up new opportunities, whether you’re an absolute beginner or honing your deployment prowess.
Your 25-Day Roadmap:
- Days 1–5: Start simple. Run your first Docker container, bring a site live, secure it with HTTPS, and connect it to a custom domain.
- Days 6–10: Advance to building production-ready images with Dockerfiles and multi-stage builds. Push these images to private registries and establish a continuous deployment pipeline from GitHub to AWS App Runner.
- Days 11–15: Dive deeper into AWS. Manage networking, ensure data persistence, and integrate multi-container apps seamlessly into the cloud.
- Days 16–20: Orchestrate multi-service deployments with Docker Compose. Introduce load balancing and gain the confidence to pick your next steps—stay with App Runner or embrace ECS or Kubernetes down the road.
- Days 21–25: Pull it all together. Manage advanced configurations, persistent storage, and scaling strategies, ensuring your final environment is truly production-ready.
Why This Course Is Different
You’ll learn by doing, working through practical exercises each step of the way. There’s no guesswork—just clear, hands-on guidance designed to make these tools feel second nature. Whether you’re a newcomer or have some familiarity, this course will sharpen your skills and give you the confidence to tackle real deployment challenges head-on.
Enroll Today and Transform Your Skills
In just 25 days, you’ll go from a complete beginner to a capable, adaptable professional. You’ll know how to containerize, secure, automate, and scale applications—ready to apply these skills in your current role or future projects.
What you’ll learn
- Understand the basics of containerization with Docker
- Run and manage containerized apps with Docker and Kubernetes
- Deploy production workloads on AWS (EC2, AppRunner, ECS, EKS)
- Secure, scale, and automate real-world cloud environments
- Apply best practices for storage, networking, and load balancing
- Boost your resume with sought-after DevOps and Cloud Engineering skills
- Qualify for roles like DevOps Engineer, Cloud Infrastructure Engineer, or SRE
Table of Contents
Introduction
1 Introduction
DAY 1 Running your first Docker Containers
2 Overview
3 Deployment Problems
4 What is a Container
5 Installing Docker Desktop
6 Installation Notes for other OS
7 Run your first Docker Containers
8 What is Docker Hub
9 Pull and Inspect Images, View their History
10 Select specific Images by Tags
11 Understand the `docker run` Command
Preparation Linux Shell Crash Course
12 Overview
13 Crash Course Linux Shell
DAY 2 Managing Containers and Running a Web Server within a Container
14 Overview
15 IP Addresses & Port Numbers
16 What is a Web Server
17 Publish a Port to Launch a NGINX Web Server
18 Run a Container in Interactive or Detached Mode
19 Display Information about Containers
20 Set Custom Names for Containers
21 Stop, Start and Remove Containers
22 Run Containers that Delete Automatically
23 Change the Default Command when Starting a Container
24 Access Running Containers
25 Configure a Container for Interactive Mode during Creation
26 Exercise Change the Default Page of an NGINX Webserver
27 Heads-Up Using the Nano Editor
28 Solution Change the Default Page of an NGINX Webserver
DAY 3 Deploying a first Container on a Webserver
29 Overview
30 What are AWS and EC2
31 Platforms to deploy Docker AWS, Raspberry Pi, Virtual Machines
32 What is SSH
33 Create a new AWS Account
34 Explore the AWS Dashboard
35 Launch an EC2 instance and connect to it via SSH
36 [IMPORTANT] Costs on AWS
37 Stop and Terminate an EC2 Instance
38 Troubleshooting EC2 (Watch only in case of problems)
39 Server Management Part I User Roles on a Linux System
40 Server Management Part II Package Management on a Linux System
41 Server Management Part III Install Software with a Package Manager
42 The Architecture of Docker
43 Install the Docker Engine on a Remote Server
44 [For Reference] Installation Instructions
45 Deploy an Apache Web Server in Docker a Remote Server
46 Set Restart Policies for your Containers
47 [Important] Note on Stopping your Running EC2 Instance
DAY 3 [optional] Self-Hosting Alternatives (Raspberry Pi, Virtual Machines)
48 Overview
49 [Raspberry Pi path] Set up a Raspberry Pi
50 [Virtual Machine path] Set up VirtualBox
51 [Virtual Machine path] Configure Networking in VirtualBox
52 [Virtual Machine path] Configure SSH in VirtualBox
DAY 4 Managing Files within a Container & Serving a Website
53 Overview
54 How Data is Stored within the Writable Layer of a Container
55 Copy Files into and from a Container
56 Map Local Directories to Container Directories with Bind Mounts
57 Configure Read-Only Bind Mounts
58 When to Copy Files & When to use Bind Mounts
59 [Code] Sample Website for the Next Lectures
60 Example (local) Use a Bind Mount during Development
61 Example (local) Use `docker cp` during Deployment
62 Example (remote) Transfer Website Files to Server and Deploy in Docker
DAY 5 Owning a Domain & Securing the Website
63 Overview
64 DNS Crashcourse (DNS overview)
65 DNS Crashcourse (DNS records)
66 Buy and Configure a Domain with Amazon Route 53
67 [Command] Caddy Configuration in the Next Lecture
68 Enable HTTPS for the Website
69 Serve WWW through HTTPS through a Caddyfile
70 Heads-up Don’t stop the instance!
71 Troubleshooting
DAY 6 Creating your own Images with Dockerfiles
72 Overview
73 What is AWS App Runner
74 Run a Web Server on AWS App Runner
75 Transition to Dockerfiles
76 [Code] Basic Node.js App
77 Introduction to the Node.js App
78 Create a first Dockerfile & Build an Image
79 Copy Files into your Custom Image
80 Specify the Default Command for Container Start with CMD
81 Specify the Default Command for Container Start with ENTRYPOINT
82 Document Ports with the EXPOSE instruction
83 Ignore Files for Images with a `.dockerignore` File
84 Run Commands during the Build Process
85 Change the working directory during the Build Process
86 Optimize Build Instructions for Caching in a Development Workflow
DAY 7 Set up your own Registry
87 Overview
88 Comparison of CPU Architectures
89 Launch your own Registry (localhost)
90 [Raspberry Pi path] Launch your own Registry (on your Local Network)
91 [AWS path] Launch your own Registry on your own Server
92 [AWS path] Enable HTTPS for your Registry on your own Server
93 [AWS path] Password-protect your own Registry on your Server
DAY 8 AWS Identity and Access Management
94 Overview
95 [File] Geo-Coordinates for Data Center Locations
96 Regions & Availability Zones Locate your Remote Server
97 Understand Virtual Servers in AWS
98 Intro to the AWS CLI and CloudShell
99 Install the AWS CLI on Windows
100 Install the AWS CLI on Linux
101 Install the AWS CLI on MacOS
102 Configure the AWS CLI
103 Utilize the AWS CLI
104 The Amazon Resource Name (ARN)
105 Users, Groups and Policies in IAM
106 How to create a second IAM User
107 Example CLI Access as Restricted User
108 Customize IAM Inline Permission Policies
109 Create Resource-Specific Inline IAM Policies
110 Specify general IAM Managed Policies
111 Install `awscli` on an EC2 instance
112 Define Access Control and Permissions with IAM Roles
Preparation Git Crash Course
113 Intro to Git and Installation Guides
114 Initialize a new Git Repository and configure File Ignoring
115 The Git Commit Workflow
116 Restore a Previous State of a Git Repository
117 Use Branches in Git for Parallel Development
118 What is GitHub
DAY 9 Automatic Deployment to AWS App Runner
119 Overview
120 [Code] Basic Node.js App
121 Create an ECR Repository and Push a custom Image
122 Deploy an Image from ECR Repository to App Runner
123 Link your custom Domain to App Runner
124 Connect to the www Subdomain
125 Automatic Deployment (Part 1) Build and Push Image via Shell Script
126 Automatic Deployment (Part 2) Create a GitHub Repository and Connect to it
127 Automatic Deployment (Part 3) Utilize AWS CodeBuild and GitHub Webhooks
DAY 10 Building Images for Production with Dockerfiles
128 Overview
129 What is Alpine Linux
130 What are the Potential Pitfalls when using Alpine Linux
131 [Code] Basic React App
132 Project Introduction Basic React App
133 Optimize your Build Process with Multi-Stage Builds
134 Create Multi-Stage Builds for an React App
135 Ensure Container Reliability with HEALTHCHECK
136 Example Detect an Unresponsive Container with a HEALTHCHECK
137 Implement Auto-Healing for Unresponsive Containers
DAY 11 Diving into AWS Networking
138 Overview
139 What is a Virtual Private Cloud (VPC)
140 How do Subnets work in AWS
141 Example Create and Configure a custom VPC
142 How do Internet Gateways work in AWS
143 What are Network Access Control Lists (Network ACLs)
144 How to use Security Groups in AWS
145 Example Customize Security Groups for SSH Traffic
146 Troubleshooting Guide Connectivity Issues in AWS
147 Cleanup – How to Delete the Setup Completely
DAYS 12 & 13 Deploy ReactNode.jsMongoDB App [Project]
148 Overview
149 [Code] React, Node.js & MongoDB Trivia App
150 Code Base Walkthrough
151 How to Deploy the Node.js Backend
152 Deploy the Node.js Backend on ECR [optional]
153 Deploy the Node.js Backend on App Runner [optional]
154 Enable Amazon DocumentDB (Part 1)
155 Enable Amazon DocumentDB (Part 2)
156 Tips for Debugging App Runner
157 How to Deploy the React Frontend on S3
158 Connect to S3 utilizing Cyberduck [optional]
159 Deploy the React Frontend to S3 with CodeBuild
160 Configure CloudFront CDN (Part 1)
161 Configure CloudFront CDN (Part 2)
162 Connect App Runner Backend to CloudFront for Frontend Delivery
163 Reset Route 53 Configuration
164 Configure the Domain and SSL Certificates for CloudFront
165 Cleanup – How to Delete the Setup completely
DAY 14 Save persistent Container Data using Volumes
166 Overview
167 Why you should avoid updating Containers directly
168 Create and manage Volumes for Data Persistency
169 Attach Docker Volumes to Containers
170 Run Database Containers with automatically created Volumes
171 How to Delete Volumes
172 How to Configure Volumes in a Dockerfile
173 Example (Part 1) Safely Update Database Software Without Losing Data
174 Example (Part 2) Safely Update Database Software Without Losing Data
DAY 15 Connect multiple Containers through Networking
175 Overview
176 Networking in Docker
177 Container Communication using Bridge Networks
178 Example Connect phpMyAdmin-Container and MariaDB-Container
179 The none and host networks
180 How to Connect Containers in custom Bridge Networks
181 Manage Connections by Container Name with Docker’s internal DNS
182 Project Set up WordPress, phpMyAdmin, MariaDB in a Multi-Container Environment
183 Exercise Running MongoDB with mongo-express in a Multi-Container-Environment
184 Solution Running MongoDB with mongo-express in a Multi-Container-Environment
DAY 16 Manage Multi-Container Applications with Docker Compose
185 Overview
186 How `docker compose` works
187 The YAML format for Configuration
188 Project Set up WordPress with `docker compose` (Part 1)
189 Project Set up WordPress with `docker compose` (Part 2)
190 More about the `docker compose` command
191 Managing Environment Variables Securely with external `.env` files
192 Healthchecks in Compose Configurations
193 Auto-Healing in Compose Configurations
194 Testing Auto-Healing
195 Deploy WordPress with `docker compose` on a Remote Server
DAY 17 Deploy a Node.js App with Caddy in a Resilient Way [Project]
196 Overview
197 [Code] Problematic Node.js (Express) App
198 Code Base Walkthrough
199 Create the Compose Configuration File
200 Integrate Caddy as a Reverse Proxy Load Balancer in the Setup
201 Configure the Reverse Proxy Load Balancer
202 Benchmark the Caddy Load Balancer with `Siege`
203 Deal with Crashed Instances using Restart Policies
204 Overview How to Deal with Frozen Node Instances
205 Deal with Frozen Node Instances using Caddy’s Built-in Recovery Mechanisms
206 Deal with Frozen Node Instances using Healthchecks
207 How to Detect and Deal with Frozen Caddy Instances
DAY 17 [optional] Deploy the Node.jsCaddy Setup on Your Own Server [Project]
208 Exercise Overview
209 Sample Solution Ensure correct DNS Configuration (Step 1)
210 Sample Solution Upload the App to the Remote Server (Steps 2 – 4)
211 Sample Solution Enable HTTPS (Step 5)
DAY 18 Deploy a PHP App with ECS and EFS [Project]
212 Overview
213 [Code] PHP Image Gallery
214 Code Base Walkthrough
215 Deploy a PHP Container to ECS (Part 1) – Create the Task Definition
216 Deploy a PHP Container to ECS (Part 2) – Create the Fargate Cluster and Service
217 What is Elastic File System (EFS)
218 Upload the App to EFS with AWS Transfer Family (Part 1) – Create the Server
219 Upload the App to EFS with AWS Transfer Family (Part 2) – Configure Users
220 Mount EFS Volume to Container in ECS Cluster
221 Add a Load Balancer for Consistent App Access
222 Configure DNS to point to the ECS Cluster
223 Enable HTTPS for the ECS Cluster with SSL Certificates
DAY 18 [optional] Deploy a WordPress Blog on ECS with RDS [Project]
224 Overview
225 Set Up the Managed Database Service RDS
226 Exercise Host a WordPress Blog
227 Sample Solution Host a WordPress Blog
DAY 19 Launch a basic Kubernetes Cluster locally
228 Overview
229 Kubernetes Basic Concepts
230 What is a Pod
231 Launch Kubernetes with Docker and Explore Clusters with `kubectl`
232 Launch a first Pod
233 Components of Kubernetes
234 The Package Manager Helm
235 [Windows] Install Helm
236 [MacOS] Install Helm
237 [Linux] Install Helm
238 Set up the Kubernetes Dashboard with Helm
239 [For Reference] Kubernetes Dashboard Installation Guide
240 How to use the Kubernetes Dashboard
241 [YAML File] Ubuntu Pod Configuration
242 Deploy Pods according to YAML Specifications
DAY 20 Deploy Applications and Manage Workloads in Kubernetes
243 Overview
244 [For Reference] How to Restart the Kubernetes Dashboard
245 Workload Types in Kubernetes
246 Deploy a Stateless App with ReplicaSet and Deployment
247 [YAML File] WordPress Deployment Configuration
248 Configure a Deloyment Workload via YAML File
249 Managing Deployment Metadata with Labels
250 Use Labels to Manage Pod Metadata
251 How to Update a Deployment
252 [YAML File] MariaDB StatefulSet Configuration
253 Deploy Stateful Applications with StatefulSets
254 Solution Why the Database Pods are Crashing
255 Configure Environment Variables for Deployments
256 [YAML File] MariaDB Secret Configuration
257 Secure Configurations with Secrets
258 [YAML Files] Complete Deployment, StatefulSet and Secret Configurations
259 Deploy Custom Images and Define Image Pull Policies
DAY 21 Kubernetes Networking with Services
260 Overview
261 How Services Work
262 [YAML File] MariaDB Service Configuration
263 Create Services to make Applications Accessible in a Stable Way
264 [YAML File] Combined MariaDB StatefulSet & Service Configuration
265 Combine Multiple Resources in a Single Configuration File
266 DNS Resolution in Kubernetes
267 Pod Connections in StatefulSets
268 Exercise Link a WordPress Deployment with a StatefulSet Database
269 [YAML Files] Exercise Start Configurations
270 Solution Link a WordPress Deployment with a StatefulSet Database
271 [YAML Files] Exercise Solution
272 Service Types
273 [YAML File] NodePort Service Configuration for WordPress
274 Example Create a NodePort Service
275 Configuration of Service Ports
276 Naming Ports
277 [YAML Files] Updated Configurations with Services for Deployment and StatefulSet
DAY 22 Volumes in Kubernetes for Reliable Data Storage
278 Overview
279 Volume Types in Kubernetes
280 [YAML Files] Pod and Deployment with associated emptyDir Volume
281 How to use Kubernetes Volumes (emptyDir type)
282 [YAML Files] Pod and Deployment with associated hostPath Volumes
283 How to use the hostPath Volume type
284 The Key Settings for StorageClasses
285 [YAML File] PersistentVolume Configuration
286 How to define PVs (PersistentVolumes)
287 [YAML] PersistentVolumeClaim Configuration
288 How PVCs (PersistentVolumeClaims) work
289 [YAML File] Pod Configuration using a PersistentVolumeClaim
290 Connect Pods to PVs with PVCs (Ubuntu)
291 [YAML File] StatefulSet Configuration using a PersistentVolumeClaim
292 Connect StatefulSets to PVs with PVCs (MariaDB)
293 Cleanup – How to Delete a PVC
294 Manage Storage Permissions with Access Modes
DAY 23 Basics of Elastic Kubernetes Services (EKS)
295 Overview
296 [Link] Installing `eksctl`
297 Installing `eksctl` (macOS, Linux)
298 Installing `eksctl` (Windows)
299 Setup a EKS cluster with `eksctl`
300 Exploring the EKS Cluster
301 [YAML File] NGINX Deployment and NodePort Service Configuration
302 Deploying NGINX on Kubernetes with NodePort Access
303 [YAML File] NGINX Deployment and LoadBalancer Service Configuration
304 The LoadBalancer Service type
305 [Link] Reminder on how to request SSL Certificates
306 [YAML File] NGINX Deployment and NodePort Service Configuration
307 Creating an Application Load Balancer (ALB) in EC2
308 Connecting a Domain and Enabling HTTPS for the ALB
309 [For Reference] Handout for manual LoadBalancer Configuration
DAY 24 Automatic Load Balancer on EKS with Ingress
310 Overview Ingress
311 Install the AWS Load Balancer Controller
312 Configure the AWS Load Balancer Controller
313 Enabling HTTPS through Ingress
314 Route traffic to pods directly
315 Deploy a Custom Image
DAY 25 EKS with Storage (Full WordPress Setup)
316 Overview
317 Introduction to the Project Setup Files
318 Create an EFS Volume
319 Configure EKS
320 Mount the EFS Volume
321 Outlook Running a Database
322 Outlook Preparing for EBS
323 EBS Preparation
324 Create an EBS Volume
325 Create and Mount the PV
326 Install WordPress
327 Delete everything
Closing Words
328 Closing Words
Resolve the captcha to access the links!