Introduction and Course Resources
  • Introduction and Course Roadmap
  • Getting The Most Out Of This Course
  • Download Course Resources (GitHub Repo)
  • Course Chat: 35k Students Learning Containers
  • Weekly YouTube Live Q&A with Bret
Docker Compose Basics
  • Section Intro: Compose Basics
  • Getting The Right Docker and Compose Versions
  • Why Compose?
  • Compose File Format
  • docker-compose CLI
  • Assignment: Compose CLI Basics
  • Assignment Answer: Compose CLI Basics
Node Dockerfile Best Practice Basics
  • Section Intro: Dockerfile Best Practice Basics
  • Dockerfile Best Practice Basics
  • FROM Base Image Guidelines
  • When To Use Alpine, Debian, or CentOS Images
  • Assignment Making a CentOS Node Image
  • Assignment Answers: Making a CentOS Node Image
  • Running Non-root Container Users
  • Working With The Node User Limits
  • Making Images Efficiently
Controlling The Node Process In Containers
  • Section Intro: Controlling The Node Process
  • Node Process Management
  • The Truth About the PID 1 Problem
  • Proper Node Shutdown Options
  • Assignment: Writing Node Dockerfiles
  • Assignment Answers: Writing Node Dockerfiles
  • Assignment: Testing Graceful Shutdowns
  • Assignment Answers: Testing Graceful Shutdowns
Advanced Dockerfiles with Multi-stage and BuildKit
  • Section Intro: Advanced Node Dockerfiles
  • Multi-stage Docker Builds
  • More Multi-stage Uses
  • Assignment: Building A 3-Stage Dockerfile
  • Assignment Answers: Building a 3-Stage Dockerfile
  • BuildKit, The Next Gen Builder
  • Using BuildKit to Enable SSH Keys for Private NPM Repositories
  • Using BuildKit to Reuse NPM Cache
Node Apps in Cloud Native Docker
  • Section Intro: Node Apps in Cloud Native Docker
  • Cloud Native App Guidelines
  • Twelve Factor Apps - Config
  • Twelve Factor Apps - Logs
  • The .dockerignore File
  • Assignment Migrating Traditional Apps
  • Assignment Answers Migrating Traditional Apps
Compose for Awesome Local Development
  • Section Intro: Compose for Awesome Local Development
  • Compose Project Tips
  • Bind-Mounting Code, Optimizing for Performance
  • Node Modules In Images
  • Node Modules In Bind-Mounts
  • NPM, Yarn and Other Tools in Compose
  • File Monitoring and Node Auto Restarts
  • Startup Order and Dependencies
  • Healthchecks for depends_on
  • Shrinking Compose Files and DRY YAML
  • Making Microservices Easier with Compose
  • VS Code, Debugging and TypeScript
  • Assignment: Building a Sweet Compose File
  • Assignment Answers: Building a Sweet Compose File
Making Container Images Production Ready
  • Section Intro: Making Container Images Production Ready
  • Avoiding devDependencies In Prod
  • Dockerfile Comments, Arguments, and Labels
  • Running Tests During Image Builds
  • Security Scanning During Image Build
  • CI Automated Testing and Proper Image Tags
  • Adding Healthchecks
  • Assignment: Making Your Ultimate Node.js Dockerfile
  • Assignment Answers: Making Your Ultimate Node.js Dockerfile
  • Assignment Answers BONUS: Making Your Ultimate Node Dockerfile
Running Production Node.js Containers
  • Section Intro
  • Node.js Multi-Threaded Concerns
  • Why Not Use Compose In Production?
  • Node.js Containers With Proxies
  • Container Replacement and Connection Management
  • Node.js With Container Orchestration
  • Node.js With Docker Swarm
Running Node.js on ARM with Docker
  • The State of ARM and Docker for Node.js
  • Running Node.js ARM Containers For Development
  • Running Node.js ARM Container for Production
  • The Future of Multi-Arch Docker: Making ARM Easier
Extras
  • Bret's DockerCon Talks on Production Docker
  • Bret's DevOps and Docker Podcast
  • Bonus