Build, test, and deploy Docker applications with Kubernetes while learning production-style development workflows
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!
Course Curriculum
Dive Into Docker! | |||
Why Use Docker? | 00:00:00 | ||
What is Docker? | 00:00:00 | ||
Docker for Mac/Windows | 00:00:00 | ||
Installing Docker on MacOS | 00:00:00 | ||
Installing Docker for Windows Home users | 00:00:00 | ||
Installing Docker for Windows – Professional and Enterprise Editions | 00:00:00 | ||
More Windows Setup – Professional and Enterprise Editions | 00:00:00 | ||
One Last Piece of Windows Setup – Professional and Enterprise Editions | 00:00:00 | ||
Installing Docker on Linux | 00:00:00 | ||
Using the Docker Client | 00:00:00 | ||
But Really…What’s a Container? | 00:00:00 | ||
How’s Docker Running on Your Computer? | 00:00:00 | ||
Manipulating Containers with the Docker Client | |||
Docker Run in Detail | 00:00:00 | ||
Overriding Default Commands | 00:00:00 | ||
Listing Running Containers | 00:00:00 | ||
Container Lifecycle | 00:00:00 | ||
Restarting Stopped Containers | 00:00:00 | ||
Removing Stopped Containers | 00:00:00 | ||
Retrieving Log Outputs | 00:00:00 | ||
Stopping Containers | 00:00:00 | ||
Multi-Command Containers | 00:00:00 | ||
Executing Commands in Running Containers | 00:00:00 | ||
The Purpose of the IT Flag | 00:00:00 | ||
Getting a Command Prompt in a Container | 00:00:00 | ||
Starting with a Shell | 00:00:00 | ||
Container Isolation | 00:00:00 | ||
Building Custom Images Through Docker Server | |||
Creating Docker Images | 00:00:00 | ||
Building a Dockerfile | 00:00:00 | ||
Dockerfile Teardown | 00:00:00 | ||
What’s a Base Image? | 00:00:00 | ||
The Build Process in Detail | 00:00:00 | ||
A Brief Recap | 00:00:00 | ||
Rebuilds with Cache | 00:00:00 | ||
Tagging an Image | 00:00:00 | ||
Manual Image Generation with Docker Commit | 00:00:00 | ||
Making Real Projects with Docker | |||
Project Outline | 00:00:00 | ||
Node Server Setup | 00:00:00 | ||
Server Code | 00:00:00 | ||
A Few Planned Errors | 00:00:00 | ||
Base Image Issues | 00:00:00 | ||
A Few Missing Files | 00:00:00 | ||
Copying Build Files | 00:00:00 | ||
Container Port Mapping | 00:00:00 | ||
Specifying a Working Directory | 00:00:00 | ||
Unnecessary Rebuilds | 00:00:00 | ||
Minimizing Cache Busting and Rebuilds | 00:00:00 | ||
Docker Compose with Multiple Local Containers | |||
App Overview | 00:00:00 | ||
App Server Code | 00:00:00 | ||
Completed Node Code | 00:00:00 | ||
Assembling a Dockerfile | 00:00:00 | ||
Introducing Docker Compose | 00:00:00 | ||
Docker Compose Files | 00:00:00 | ||
Networking with Docker Compose | 00:00:00 | ||
Docker Compose Commands | 00:00:00 | ||
Stopping Docker Compose Containers | 00:00:00 | ||
Container Maintenance with Compose | 00:00:00 | ||
Automatic Container Restarts | 00:00:00 | ||
Container Status with Docker Compose | 00:00:00 | ||
Creating a Production-Grade Workflow | |||
Development Workflow | 00:00:00 | ||
Flow Specifics | 00:00:00 | ||
Docker’s Purpose | 00:00:00 | ||
Project Generation | 00:00:00 | ||
More on Project Generation | 00:00:00 | ||
Necessary Commands | 00:00:00 | ||
Creating the Dev Dockerfile | 00:00:00 | ||
Duplicating Dependencies | 00:00:00 | ||
Starting the Container | 00:00:00 | ||
Quick Note for Windows Users | 00:00:00 | ||
Docker Volumes | 00:00:00 | ||
Bookmarking Volumes | 00:00:00 | ||
Shorthand with Docker Compose | 00:00:00 | ||
Overriding Dockerfile Selection | 00:00:00 | ||
Do We Need Copy? | 00:00:00 | ||
Executing Tests | 00:00:00 | ||
Live Updating Tests | 00:00:00 | ||
Docker Compose for Running Tests | 00:00:00 | ||
Shortcomings on Testing | 00:00:00 | ||
Need for Nginx | 00:00:00 | ||
Multi-Step Docker Builds | 00:00:00 | ||
Implementing Multi-Step Builds | 00:00:00 | ||
Running Nginx | 00:00:00 | ||
Continuous Integration and Deployment with AWS | |||
Services Overview | 00:00:00 | ||
Github Setup | 00:00:00 | ||
Travis CI Setup | 00:00:00 | ||
Travis YML File Configuration | 00:00:00 | ||
A Touch More Travis Setup | 00:00:00 | ||
Automatic Build Creation | 00:00:00 | ||
AWS Elastic Beanstalk | 00:00:00 | ||
More on Elastic Beanstalk | 00:00:00 | ||
Travis Config for Deployment | 00:00:00 | ||
Automated Deployments | 00:00:00 | ||
Exposing Ports Through the Dockerfile | 00:00:00 | ||
Build Still Failing? | 00:00:00 | ||
Workflow With Github | 00:00:00 | ||
Redeploy on Pull Request Merge | 00:00:00 | ||
Deployment Wrapup | 00:00:00 | ||
Environment Cleanup | 00:00:00 | ||
Building a Multi-Container Application | |||
Single Container Deployment Issues | 00:00:00 | ||
Application Overview | 00:00:00 | ||
A Quick Note | 00:00:00 | ||
Application Architecture | 00:00:00 | ||
Worker Process Setup | 00:00:00 | ||
Express API Setup | 00:00:00 | ||
Connecting to Postgres | 00:00:00 | ||
More Express API Setup | 00:00:00 | ||
Generating the React App | 00:00:00 | ||
Fetching Data in the React App | 00:00:00 | ||
Rendering Logic in the App | 00:00:00 | ||
Exporting the Fib Class | 00:00:00 | ||
Routing in the React App | 00:00:00 | ||
"Dockerizing" Multiple Services | |||
Checkpoint Files | 00:00:00 | ||
Checkpoint Catchup | 00:00:00 | ||
Dockerizing a React App – Again! | 00:00:00 | ||
Dockerizing Generic Node Apps | 00:00:00 | ||
Adding Postgres as a Service | 00:00:00 | ||
Docker-compose Config | 00:00:00 | ||
Environment Variables with Docker Compose | 00:00:00 | ||
The Worker and Client Services | 00:00:00 | ||
Nginx Path Routing | 00:00:00 | ||
Routing with Nginx | 00:00:00 | ||
Building a Custom Nginx Image | 00:00:00 | ||
Starting Up Docker Compose | 00:00:00 | ||
Troubleshooting | 00:00:00 | ||
Troubleshooting Startup Bugs | 00:00:00 | ||
Opening Websocket Connections | 00:00:00 | ||
A Continuous Integration Workflow for Multiple Images | |||
Production Multi-Container Deployments | 00:00:00 | ||
Production Dockerfiles | 00:00:00 | ||
Multiple Nginx Instances | 00:00:00 | ||
Altering Nginx’s Listen Port | 00:00:00 | ||
A Quick Fix | 00:00:00 | ||
Cleaning Up Tests | 00:00:00 | ||
Github and Travis CI Setup | 00:00:00 | ||
Travis Configuration Setup | 00:00:00 | ||
Pushing Images to Docker Hub | 00:00:00 | ||
Successful Image Building | 00:00:00 | ||
Multi-Container Deployments to AWS | |||
Multi-Container Definition Files | 00:00:00 | ||
Finding Docs on Container Definitions | 00:00:00 | ||
Adding Container Definitions to DockerRun | 00:00:00 | ||
More Container Definitions | 00:00:00 | ||
Forming Container Links | 00:00:00 | ||
Creating the EB Environment | 00:00:00 | ||
Managed Data Service Providers | 00:00:00 | ||
Overview of AWS VPC’s and Security Groups | 00:00:00 | ||
RDS Database Creation | 00:00:00 | ||
ElastiCache Redis Creation | 00:00:00 | ||
Creating a Custom Security Group | 00:00:00 | ||
Applying Security Groups to Resources | 00:00:00 | ||
Setting Environment Variables | 00:00:00 | ||
IAM Keys for Deployment | 00:00:00 | ||
Travis Deploy Script | 00:00:00 | ||
Container Memory Allocations | 00:00:00 | ||
Verifying Deployment | 00:00:00 | ||
A Quick App Change | 00:00:00 | ||
Making Changes | 00:00:00 | ||
Cleaning Up AWS Resources | 00:00:00 | ||
Onwards to Kubernetes! | |||
The Why’s and What’s of Kubernetes | 00:00:00 | ||
Kubernetes in Development and Production | 00:00:00 | ||
Setup on MacOS | 00:00:00 | ||
Mapping Existing Knowledge | 00:00:00 | ||
Adding Configuration Files | 00:00:00 | ||
Object Types and API Versions | 00:00:00 | ||
Running Containers in Pods | 00:00:00 | ||
Service Config Files in Depth | 00:00:00 | ||
Connecting to Running Containers | 00:00:00 | ||
The Entire Deployment Flow | 00:00:00 | ||
Imperative vs Declarative Deployments | 00:00:00 | ||
Maintaining Sets of Containers with Deployments | |||
Updating Existing Objects | 00:00:00 | ||
Declarative Updates in Action | 00:00:00 | ||
Limitations in Config Updates | 00:00:00 | ||
Running Containers with Deployments | 00:00:00 | ||
Deployment Configuration Files | 00:00:00 | ||
Walking Through the Deployment Config | 00:00:00 | ||
Applying a Deployment | 00:00:00 | ||
Why Use Services? | 00:00:00 | ||
Scaling and Changing Deployments | 00:00:00 | ||
Updating Deployment Images | 00:00:00 | ||
Rebuilding the Client Image | 00:00:00 | ||
Triggering Deployment Updates | 00:00:00 | ||
Imperatively Updating a Deployment’s Image | 00:00:00 | ||
Multiple Docker Installations | 00:00:00 | ||
Reconfiguring Docker CLI | 00:00:00 | ||
Why Mess with Docker in the Node? | 00:00:00 | ||
A Multi-Container App with Kubernetes | |||
The Path to Production | 00:00:00 | ||
Checkpoint Files | 00:00:00 | ||
A Quick Checkpoint | 00:00:00 | ||
Recreating the Deployment | 00:00:00 | ||
NodePort vs ClusterIP Services | 00:00:00 | ||
The ClusterIP Config | 00:00:00 | ||
Applying Multiple Files with Kubectl | 00:00:00 | ||
Express API Deployment Config | 00:00:00 | ||
Cluster IP for the Express API | 00:00:00 | ||
Combining Config Into Single Files | 00:00:00 | ||
The Worker Deployment | 00:00:00 | ||
Reapplying a Batch of Config Files | 00:00:00 | ||
Creating and Applying Redis Config | 00:00:00 | ||
Last Set of Boring Config! | 00:00:00 | ||
The Need for Volumes with Databases | 00:00:00 | ||
Kubernetes Volumes | 00:00:00 | ||
Volumes vs Persistent Volumes | 00:00:00 | ||
Persistent Volumes vs Persistent Volume Claims | 00:00:00 | ||
Claim Config Files | 00:00:00 | ||
Persistent Volume Access Modes | 00:00:00 | ||
Where Does Kubernetes Allocate Persistent Volumes? | 00:00:00 | ||
Designating a PVC in a Pod Template | 00:00:00 | ||
Applying a PVC | 00:00:00 | ||
Defining Environment Variables | 00:00:00 | ||
Adding Environment Variables to Config | 00:00:00 | ||
Creating an Encoded Secret | 00:00:00 | ||
Passing Secrets as Environment Variables | 00:00:00 | ||
Environment Variables as Strings | 00:00:00 | ||
Handling Traffic with Ingress Controllers | |||
Load Balancer Services | 00:00:00 | ||
A Quick Note on Ingresses | 00:00:00 | ||
One Other Quick Note! | 00:00:00 | ||
Behind the Scenes of Ingress | 00:00:00 | ||
More Behind the Scenes of Ingress | 00:00:00 | ||
Optional Reading on Ingress Nginx | 00:00:00 | ||
Setting up Ingress Locally | 00:00:00 | ||
Creating the Ingress Config | 00:00:00 | ||
Testing Ingress Locally | 00:00:00 | ||
The Minikube Dashboard | 00:00:00 | ||
Kubernetes Production Deployment | |||
The Deployment Process | 00:00:00 | ||
Google Cloud vs AWS for Kubernetes | 00:00:00 | ||
Creating a Git Repo | 00:00:00 | ||
Linking the Github Repo to Travis | 00:00:00 | ||
Free Google Cloud Credits | 00:00:00 | ||
Creating a Google Cloud Project | 00:00:00 | ||
Linking a Billing Account | 00:00:00 | ||
Kubernetes Engine Init | 00:00:00 | ||
Creating a Cluster with Google Cloud | 00:00:00 | ||
Don’t Forget to Cleanup! | 00:00:00 | ||
Kubernetes Dashboard on Google Cloud | 00:00:00 | ||
Travis Deployment Overview | 00:00:00 | ||
Installing the Google Cloud SDK | 00:00:00 | ||
Generating a Service Account | 00:00:00 | ||
Running Travis CLI in a Container | 00:00:00 | ||
Encrypting a Service Account File | 00:00:00 | ||
More Google Cloud CLI Config | 00:00:00 | ||
Running Tests with Travis | 00:00:00 | ||
Custom Deployment Providers | 00:00:00 | ||
Unique Deployment Images | 00:00:00 | ||
Unique Tags for Built Images | 00:00:00 | ||
Updating the Deployment Script | 00:00:00 | ||
Configuring the GCloud CLI on Cloud Console | 00:00:00 | ||
Creating a Secret on Google Cloud | 00:00:00 | ||
Helm Setup | 00:00:00 | ||
Kubernetes Security with RBAC | 00:00:00 | ||
Assigning Tiller a Service Account | 00:00:00 | ||
Ingress-Nginx with Helm | 00:00:00 | ||
The Result of Ingress-Nginx | 00:00:00 | ||
Finally – Deployment! | 00:00:00 | ||
Did I Really Type That? | 00:00:00 | ||
Verifying Deployment | 00:00:00 | ||
A Workflow for Changing in Prod | 00:00:00 | ||
Merging a PR for Deployment | 00:00:00 | ||
That’s It! What’s Next? | 00:00:00 | ||
HTTPS Setup with Kubernetes | |||
HTTPS Setup Overview | 00:00:00 | ||
Domain Purchase | 00:00:00 | ||
Domain Name Setup | 00:00:00 | ||
Cert Manager Install | 00:00:00 | ||
How to Wire Up Cert Manager | 00:00:00 | ||
Issuer Config File | 00:00:00 | ||
Certificate Config File | 00:00:00 | ||
Deploying Changes | 00:00:00 | ||
Verifying the Certificate | 00:00:00 | ||
Ingress Config for HTTPS | 00:00:00 | ||
It Worked! | 00:00:00 | ||
Google Cloud Cleanup | 00:00:00 | ||
Local Environment Cleanup | 00:00:00 |
Course Reviews
No Reviews found for this course.
6 STUDENTS ENROLLED