image
The Ultimate Drawing Course Beginner to Advanced...
$179
$79
image
User Experience Design Essentials - Adobe XD UI UX...
$179
$79
Total:
$659

Description

If you're tired of spinning your wheels learning how to deploy web applications, this is the course for you.
CI+CD Workflows
? You will learn it.  
AWS Deployment
? Included.  
Kubernetes in Production
? Of course!
This is the ultimate course to learn how to deploy
any
web application you can possibly dream up.  Docker and Kubernetes are the newest tech in the Dev Ops world, and have dramatically changed the flow of creating and deploying web apps.  Docker is a technology that allows applications to run in constructs called 'containers', while Kubernetes allows for many different 'containers' to run in coordination.
Docker from Scratch!
In this course you'll
learn Docker from absolute fundamentals
, beginning by learning the answer to basic questions such as "What is a container?" and "How does a container work?".  From the very first few lectures, we will do a
deep dive on the inner workings of containers
, so you get a core understanding of exactly how they are implemented.  Once you understand what a container is, you'll learn how to work with them using basic Docker CLI commands.  After that, you'll apply your new-found mastery of the Docker CLI to build your own custom images, effectively 'Dockerizing' your own personal applications. 
CI + CD Pipelines
Of course, no course on Docker would be complete without a full understanding of common Continuous Integration and Continuous Deployment patterns.  You will learn how to implement
a full CI + CD workflow
using Github, Travis CI, and Amazon Web Services, creating a pipeline that
automatically deploys your code
every time you push your latest changes to Github!
Multi-Container Deployments on AWS!
After building a deployment pipeline, you'll apply it to master both single-container and multi-container
deployments on Amazon Web Services. 
You will construct a multi-container application utilizing
Node, React, Redis, and Postgres
, and see the amazing power of containers in action (Note: all Javascript coding in this course is optional, the full source code is provided if you don't want to write JS).
Kubernetes!
Finally, you will tackle Kubernetes, a production-grade system for managing complex applications with many different running containers.  You will learn the
right way to build a Kubernetes Cluster
- this course doesn't have any of those annoying
"don't do this in production"
comments!  You will first build a Kubernetes Cluster on your local machine, then eventually move it over to a cloud provider.  You'll even learn how to
set up HTTPS on Kubernetes
, which is harder than it sounds!
Here's what you'll do:
Learn Docker from scratch,
no previous experience required
Build your own
custom images
tailored to your applications
Master the Docker CLI to
inspect and debug
running containers
Understand
how Docker works
behind the scenes, and what a container is
Build a
CI + CD pipeline
from scratch with Github, Travis CI, and AWS
Automatically deploy
your code when it is pushed to Github!
Build a
complex multi-container application
from scratch and deploy it to AWS
Understand the purpose and
theory of Kubernetes
Deploy a
production-ready Kubernetes
Cluster to Google Cloud
Who this course is for:
Software engineers looking to deploy their apps easily and quickly

What you'll learn

Learn Docker from scratch, no previous experience required

Master the Docker CLI to inspect and debug running containers

Build a CI + CD pipeline from scratch with Github, Travis CI, and AWS

Understand the purpose and theory of Kubernetes by building a complex app

Automatically deploy your code when it is pushed to Github!

Develop practical skills through hands-on projects and exercises

Requirements

  • You will need a copy of Adobe XD 2019 or above. A free trial can be downloaded from Adobe.
  • No previous design experience is needed.
  • No previous Adobe XD skills are needed.

Course Content

27 sections • 95 lectures
Expand All Sections
1-Dive Into Docker!
12
1.1-Finished Code and Diagrams
1.2-Join Our Community!
1.3-Why Use Docker?
1.4-What is Docker?
1.5-Docker for Mac/Windows
1.6-Installing Docker on macOS
1.7-Installing Docker with WSL on Windows 10/11
1.8-Installing Docker on Linux
1.9-Using the Docker Client
1.10-But Really...What's a Container?
1.11-How's Docker Running on Your Computer?
1.12-Images and Containers
2-Manipulating Containers with the Docker Client
14
2.1-Docker Run in Detail
2.2-Overriding Default Commands
2.3-Listing Running Containers
2.4-Container Lifecycle
2.5-Restarting Stopped Containers
2.6-Removing Stopped Containers
2.7-Retrieving Log Outputs
2.8-Stopping Containers
2.9-Multi-Command Containers
2.10-Executing Commands in Running Containers
2.11-The Purpose of the IT Flag
2.12-Getting a Command Prompt in a Container
2.13-Starting with a Shell
2.14-Container Isolation
3-Building Custom Images Through Docker Server
15
3.1-Creating Docker Images
3.2-Buildkit for Docker Desktop
3.3-Building a Dockerfile
3.4-Dockerfile Teardown
3.5-What's a Base Image?
3.6-The Build Process in Detail
3.7-A Brief Recap
3.8-Quiz on FROM
3.9-Quiz on the Alpine Image
3.10-Rebuilds with Cache
3.11-Tagging an Image
3.12-Quick Note for Windows Users
3.13-Manual Image Generation with Docker Commit
3.14-Image Tags
3.15-Image Tagging
4-Making Real Projects with Docker
12
4.1-Project Outline
4.2-Node Server Setup
4.3-Reminder on Buildkit
4.4-A Few Planned Errors
4.5-Base Image Issues
4.6-A Few Missing Files
4.7-Copying Build Files
4.8-Container Port Mapping
4.9-Specifying a Working Directory
4.10-Unnecessary Rebuilds
4.11-Minimizing Cache Busting and Rebuilds
4.12-Minimizing Cache Busting
5-Docker Compose with Multiple Local Containers
12
5.1-App Overview
5.2-App Server Starter Code
5.3-Assembling a Dockerfile
5.4-Introducing Docker Compose
5.5-Docker Compose Files
5.6-Networking with Docker Compose
5.7-Docker Compose Commands
5.8-Stopping Docker Compose Containers
5.9-Container Maintenance with Compose
5.10-Automatic Container Restarts
5.11-Container Status with Docker Compose
5.12-Visits Application Updated for Redis v4+
6-Creating a Production-Grade Workflow
23
6.1-Development Workflow
6.2-Flow Specifics
6.3-Docker's Purpose
6.4-Project Generation
6.5-More on Project Generation
6.6-Necessary Commands
6.7-Creating the Dev Dockerfile
6.8-Duplicating Dependencies
6.9-Starting the Container
6.10-Docker Volumes
6.11-WSL and Windows Users Must Read Before Next Lecture
6.12-Bookmarking Volumes
6.13-Shorthand with Docker Compose
6.14-Overriding Dockerfile Selection
6.15-Do We Need Copy?
6.16-Executing Tests
6.17-Live Updating Tests
6.18-Docker Compose for Running Tests
6.19-Shortcomings on Testing
6.20-Need for Nginx
6.21-Multi-Step Docker Builds
6.22-Implementing Multi-Step Builds
6.23-Running Nginx
7-Continuous Integration and Deployment with AWS
21
7.1-Services Overview
7.2-Github Setup
7.3-Important Info About Travis and Account Registration
7.4-GitHub Actions Instead of Travis CI
7.5-Travis CI Setup
7.6-Travis YML File Configuration
7.7-A Touch More Travis Setup
7.8-Automatic Build Creation
7.9-AWS Elastic Beanstalk
7.10-Elastic Beanstalk Setup and Configuration
7.11-More on Elastic Beanstalk
7.12-Travis Config for Deployment
7.13-Required Update for IAM User and Keys
7.14-Automated Deployments
7.15-Exposing Ports Through the Dockerfile
7.16-Workflow With Github
7.17-Redeploy on Pull Request Merge
7.18-Deployment Wrapup
7.19-Environment Cleanup
7.20-AWS Configuration Cheat Sheet
7.21-Finished Project Code with Updates Applied
8-Building a Multi-Container Application
14
8.1-Single Container Deployment Issues
8.2-Application Overview
8.3-A Quick Note
8.4-Application Architecture
8.5-Worker Process Setup
8.6-Express API Setup
8.7-Important Update for pgClient and Table Query
8.8-Connecting to Postgres
8.9-More Express API Setup
8.10-React App Boilerplate
8.11-Fetching Data in the React App
8.12-Rendering Logic in the App
8.13-Exporting the Fib Class
8.14-Routing in the React App
9-"Dockerizing" Multiple Services
19
9.1-Checkpoint Files
9.2-Checkpoint Catchup
9.3-Expected Output for Latest Create React App Versions
9.4-Dockerizing a React App - Again!
9.5-Dockerizing Generic Node Apps
9.6-Postgres Database Required Fixes and Updates
9.7-Adding Postgres as a Service
9.8-Docker-compose Config
9.9-Environment Variables with Docker Compose
9.10-Required Worker Environment Variables
9.11-The Worker and Client Services
9.12-Nginx Path Routing
9.13-Routing with Nginx
9.14-Building a Custom Nginx Image
9.15-Starting Up Docker Compose
9.16-Nginx connect() failed - Connection refused while connecting to upstream
9.17-Troubleshooting Startup Bugs
9.18-WebSocket connection to 'ws://localhost:3000/ws' failed
9.19-Opening Websocket Connections
10-A Continuous Integration Workflow for Multiple Images
12
10.1-Production Multi-Container Deployments
10.2-Production Dockerfiles
10.3-Multiple Nginx Instances
10.4-Nginx fix for React Router
10.5-Altering Nginx's Listen Port
10.6-Cleaning Up Tests
10.7-Travis Configuration Setup
10.8-Fix for Failing Travis Builds
10.9-Github and Travis CI Setup
10.10-Pushing Images to Docker Hub
10.11-Successful Image Building
10.12-Multi Container Update for Redis v4+, React Hooks, React Router v6+
11-Multi-Container Deployments to AWS
24
11.1-Multi-Container Definition Files
11.2-Finding Docs on Container Definitions
11.3-Adding Container Definitions to DockerRun
11.4-More Container Definitions
11.5-Forming Container Links
11.6-Creating the Elastic Beanstalk Environment
11.7-AWS Configuration Cheat Sheet - Updated for new UI
11.8-Managed Data Service Providers
11.9-Overview of AWS VPC's and Security Groups
11.10-RDS Database Creation
11.11-ElastiCache Redis Creation
11.12-Creating a Custom Security Group
11.13-Applying Security Groups to Resources
11.14-Setting Environment Variables
11.15-IAM Keys for Deployment
11.16-Travis Keys Update
11.17-Travis Deploy Script
11.18-Container Memory Allocations
11.19-Verifying Deployment
11.20-A Quick App Change
11.21-Making Changes
11.22-Cleaning Up AWS Resources
11.23-AWS Configuration Cheat Sheet
11.24-Finished Project Code with Updates Applied
12-Onwards to Kubernetes!
19
12.1-The Why's and What's of Kubernetes
12.2-Kubernetes in Development and Production
12.3-Docker Desktop's Kubernetes Setup and Installation - macOS
12.4-Minikube Install and Setup Info - macOS
12.5-Docker Desktop's Kubernetes Setup and Installation - Windows
12.6-Minikube Setup on Windows
12.7-Minikube Setup on Linux
12.8-Mapping Existing Knowledge
12.9-Quick Note to Prevent an Error
12.10-Adding Configuration Files
12.11-Object Types and API Versions
12.12-Running Containers in Pods
12.13-Gotcha Around Images Used in Pods
12.14-Service Config Files in Depth
12.15-Why Use Pod Labels?
12.16-Connecting to Running Containers
12.17-The Entire Deployment Flow
12.18-Imperative vs Declarative Deployments
12.19-Kubernetes Config Files
13-Maintaining Sets of Containers with Deployments
19
13.1-Updating Existing Objects
13.2-Declarative Updates in Action
13.3-Limitations in Config Updates
13.4-Running Containers with Deployments
13.5-Quick Note to Prevent an Error
13.6-Deployment Configuration Files
13.7-Walking Through the Deployment Config
13.8-Applying a Deployment
13.9-Why Use Services?
13.10-Important Notes on Services
13.11-Scaling and Changing Deployments
13.12-Updating Deployment Images
13.13-Rebuilding the Client Image
13.14-Triggering Deployment Updates
13.15-Imperatively Updating a Deployment's Image
13.16-Reminder for Docker Desktop's Kubernetes Users
13.17-Multiple Docker Installations
13.18-Reconfiguring Docker CLI
13.19-Why Mess with Docker in the Node?
14-A Multi-Container App with Kubernetes
30
14.1-The Path to Production
14.2-Checkpoint Files
14.3-A Quick Checkpoint
14.4-Recreating the Deployment
14.5-NodePort vs ClusterIP Services
14.6-The ClusterIP Config
14.7-Applying Multiple Files with Kubectl
14.8-Express API Deployment Config
14.9-Cluster IP for the Express API
14.10-Combining Config Into Single Files
14.11-The Worker Deployment
14.12-Reapplying a Batch of Config Files
14.13-Creating and Applying Redis Config
14.14-Important Note about Expected Postgres Error
14.15-Last Set of Boring Config!
14.16-The Need for Volumes with Databases
14.17-Kubernetes Volumes
14.18-Volumes vs Persistent Volumes
14.19-Persistent Volumes vs Persistent Volume Claims
14.20-Claim Config Files
14.21-Persistent Volume Access Modes
14.22-Where Does Kubernetes Allocate Persistent Volumes?
14.23-Designating a PVC in a Pod Template
14.24-Applying a PVC
14.25-Defining Environment Variables
14.26-Adding Environment Variables to Config
14.27-Creating an Encoded Secret
14.28-Postgres Environment Variable Fix
14.29-Passing Secrets as Environment Variables
14.30-Environment Variables as Strings
15-Handling Traffic with Ingress Controllers
14
15.1-Load Balancer Services
15.2-A Quick Note on Ingresses
15.3-One Other Quick Note!
15.4-Behind the Scenes of Ingress
15.5-More Behind the Scenes of Ingress
15.6-Optional Reading on Ingress Nginx
15.7-Docker Driver and Ingress - IMPORTANT
15.8-Setting Up Ingress Locally with Docker Desktop
15.9-Setting Up Ingress Locally with Minikube
15.10-Ingress v1 API Update + "this.state.seenIndexes.map..." + 404 errors
15.11-Creating the Ingress Configuration
15.12-Testing Ingress Locally
15.13-The Minikube Dashboard
15.14-Docker Desktop's Kubernetes Dashboard
16-Kubernetes Production Deployment
40
16.1-The Deployment Process
16.2-Google Cloud vs AWS for Kubernetes
16.3-Creating a Git Repo
16.4-Linking the Github Repo to Travis
16.5-Free Google Cloud Credits
16.6-Creating a Google Cloud Project
16.7-Linking a Billing Account
16.8-Updated GKE creation steps for new Google Cloud UI
16.9-Kubernetes Engine Init
16.10-Creating a Cluster with Google Cloud
16.11-Don't Forget to Cleanup!
16.12-Kubernetes Dashboard on Google Cloud
16.13-Travis Deployment Overview
16.14-Installing the Google Cloud SDK
16.15-Updated Service Account steps for new GCP UI
16.16-Generating a Service Account
16.17-Ruby Version Fix
16.18-Running Travis CLI in a Container
16.19-Travis Login Issues, "iv undefined" or "repository not known"
16.20-Encrypting a Service Account File
16.21-More Google Cloud CLI Config
16.22-Fix For Failing Travis Builds
16.23-Running Tests with Travis
16.24-Custom Deployment Providers
16.25-Unique Deployment Images
16.26-Unique Tags for Built Images
16.27-Updating the Deployment Script
16.28-Configuring the GCloud CLI on Cloud Console
16.29-Creating a Secret on Google Cloud
16.30-Helm Setup
16.31-Important - Updated Ingress Installation with Helm
16.32-Ingress-Nginx with Helm
16.33-The Result of Ingress-Nginx
16.34-Finally - Deployment!
16.35-Did I Really Type That?
16.36-Verifying Deployment
16.37-A Workflow for Changing in Prod
16.38-Merging a PR for Deployment
16.39-That's It! What's Next?
16.40-Completed Code For Google Cloud Deployment
17-HTTPS Setup with Kubernetes
18
17.1-HTTPS Setup Overview
17.2-Domain Purchase
17.3-Domain Name Setup
17.4-Required Updates for Cert Manager Install
17.5-Cert Manager Install
17.6-How to Wire Up Cert Manager
17.7-Required Update for Issuer
17.8-Issuer Config File
17.9-Required Update for the Certificate
17.10-Certificate Config File
17.11-Deploying Changes
17.12-No Resources Found?
17.13-Verifying the Certificate
17.14-Required Update for the HTTPS Ingress
17.15-Ingress Config for HTTPS
17.16-It Worked!
17.17-Google Cloud Cleanup
17.18-Local Environment Cleanup
18-Local Development with Skaffold
7
18.1-Awkward Local Development
18.2-Installing Skaffold
18.3-The Skaffold Config File
18.4-Skaffold Sync Update and Example Source Code
18.5-Live Sync Changes
18.6-Automatic Shutdown
18.7-Testing Live Sync with the API Server
19-Extras
1
19.1-Bonus!