AWS: Deploy a Dockerized App to the Cloud
Go from zero AWS knowledge to a fully automated deployment pipeline. You'll launch EC2 instances, store files on S3, push Docker images to ECR, deploy containers on ECS Fargate, and wire up GitHub Actions for continuous delivery — all while shipping a real Node.js app.
Build it yourself, get guided when you are stuck, and leave with proof you can actually show.
What you learn by building this
- Navigate the AWS console and understand regions, availability zones, and IAM
- Create and manage IAM users, roles, and policies
- Use the AWS CLI to interact with AWS services from the terminal
- Launch EC2 instances, configure security groups, and SSH into running servers
- Store and serve files with S3
- Push Docker images to ECR and deploy containers using ECS Fargate
- Set up a CI/CD pipeline with GitHub Actions to auto-deploy on push
Challenge
Think first, then write
Before we get into any concepts, make a quick prediction.
You have a Node.js/Express app running in a Docker container on your laptop. A friend in another country wants to use it. Here's the situation:
- Your laptop is off when they try to visit
- Your home internet has a dynamic IP that changes every few days
- You don't have a domain name
What are at least 3 real problems you'd need to solve to make your app accessible 24/7 to anyone on the internet?
Write them down before moving on. There's no trick here — just think through what it actually takes to put a server on the internet.
Keep your list. You'll compare it against what AWS actually solves in a few minutes.
What AWS Actually Is
AWS is a huge catalog of rented infrastructure. Instead of buying servers, you rent them by the hour. Instead of configuring network hardware, you click a button. Every problem on your list from the challenge maps to something AWS handles:
| Your problem | AWS service that solves it |
|---|---|
| Server that's always on | EC2 (virtual machine you rent) |
| Static IP / domain routing | Elastic IP, Route 53 |
| Scaling when traffic spikes | Auto Scaling Groups, ECS |
| Storing files | S3 |
| Database | RDS |
| SSL certificates | ACM (Certificate Manager) |
You don't need to know all of these today. The point: AWS is a menu, not a single product.
The Two Concepts You Need Right Now
Regions and Availability Zones
AWS runs data centers all over the world. A region is a geographic area — like us-east-1 (Northern Virginia) or us-west-2 (Oregon). Each region has multiple availability zones (AZs) — physically separate buildings within that region.
Why does this matter to you? When you create something (a server, a database, a load balancer), you pick which region it lives in. Everything you build in this course will live in us-east-1 unless you choose otherwise.
The Global Console vs. Regional Resources
Some things in AWS are global (IAM users, billing, Route 53 DNS). Most things are regional (EC2 instances, S3 buckets in specific regions, RDS databases). The AWS console has a region selector in the top right — if your EC2 instance "disappeared," you're probably looking at the wrong region.
Services You'll Use in This Course
Here's the arc of what you're building:
Your Docker image
→ pushed to ECR (container registry)
→ deployed to ECS Fargate (serverless containers)
→ exposed via ALB (load balancer)
→ automated by GitHub Actions (CI/CD)
Your Docker image
→ pushed to ECR (container registry)
→ deployed to ECS Fargate (serverless containers)
→ exposed via ALB (load balancer)
→ automated by GitHub Actions (CI/CD)
And you'll back it with:
- IAM — who can do what
- EC2 — raw virtual machine (Module 2, for learning the fundamentals)
- S3 — file storage (Module 3)
- RDS — database (Module 3)
Each module introduces one layer. By Module 5 you'll have the whole stack wired together.
Tasks
Get Into the AWS Console
You need an AWS account. If you don't have one, go to aws.amazon.com and create one. You'll need a credit card, but everything in this course stays in the Free Tier — you won't be charged if you follow the cleanup steps at the end of each module.
Already have an account? Log in as root for now. You'll create a proper IAM user in the next lesson.
Task 1: Find Your Region
Once you're in the console:
- Look at the top-right corner of the screen. You'll see a region name like "N. Virginia" or "Oregon."
- Click it. You'll see a dropdown of all AWS regions.
- Set your region to
us-east-1(US East - N. Virginia). This is what we'll use throughout the course.
You should see: "N. Virginia" in the top-right corner after switching.
Task 2: Explore the Service Catalog
- Click "Services" in the top navigation bar.
- Spend 60 seconds scrolling through the categories: Compute, Storage, Database, Networking, Containers, Security.
You're not learning these yet — just getting a feel for the scale of what's here. You'll use maybe 8-10 of these services in this course.
Task 3: Find These Services by Searching
Use the search bar at the top to find each of these. Just open the page and look around for 20 seconds, then navigate back:
- EC2 — notice it shows "Instances: 0" in your dashboard
- S3 — notice it shows you a list of buckets (empty for now)
- IAM — notice it's listed as a "Global" service
If stuck: The search bar is the fastest way to navigate AWS. Get used to typing the service name rather than clicking through menus.
Checkpoint
You should now be able to answer:
- What region are you working in?
- What's the difference between a region and an availability zone?
- What does EC2 give you that you can't get from your own laptop?
Don't worry if the answers aren't perfectly sharp yet — the next lesson will make IAM concrete, and by Module 2 you'll have a real EC2 instance running.
How this build unfolds
AWS Foundations
Compute and Networking
Storage and Databases
Containers on AWS
CI/CD and the Full Pipeline
Learn by building your own version.
Remix this public project to open the workspace, follow the guided build, and let the AI mentor teach you through the work instead of doing it for you.