
Install and manage Docker, containers, images, and Dockerfiles for quick web server setups. Build multi-container apps with volumes, networks, and Docker Compose, and automate deployments with registries and GitHub-based updates.
Explore how Docker simplifies multi-tier deployments, using Docker Compose up --build to create a portable, cross-platform app with consistent dependencies, solving installation and environment pain points.
Launch your first Docker containers using the Play with Docker playground, access a browser-based Linux terminal, and run Ubuntu, Python, and Node environments to explore commands.
Explore how containers provide an efficient, isolated runtime for apps, reuse the host kernel, and package code and dependencies into layered images for consistent cross-system runs.
Learn to manage a Docker container's life cycle using run, start, stop, pause, kill, and remove commands, inspect and logs for troubleshooting, and using container IDs or names.
Learn to navigate linux and ubuntu shell, run file commands like pwd, cd, ls, touch, and edit with nano, plus install with apt, view processes with top, and use curl.
Compare the open source Docker daemon and command line with Docker Desktop GUI, and review licensing, platform options (Windows, Mac, Linux), and next steps.
Install Docker Desktop on Windows from Docker.com, select the amd64 version, and ensure WSL2 is enabled to run the Docker Engine and execute containers via PowerShell.
Install the Docker engine and command line tool on Linux, using open source components and sudo access, with quick setup via Ubuntu snap and Docker docs.
Forward container ports to the host to expose services, using Docker httpd, and learn about IP addresses, ports, and common web servers such as nginx and Apache.
Master running docker containers in interactive and detached modes, manage them with docker exec and start/stop, and port forward to expose services while editing index.html in apache or nginx.
Launch an nginx container with port 8000 mapped to 80 and verify the default page loads. Edit the container's index.html with nano after installing it, illustrating Docker-based web server setup.
Copy data into and from a container with docker cp, including placing a file in Apache's htdocs and exporting access logs. Edit httpd.conf and restart to apply changes.
Copy the expense tracker front end into an nginx container and replace /usr/share/nginx/html with the dist build. Expose the container port and verify the React app in a browser.
Launch an NGINX container, map port 9000 to 80, and copy the front-end files into the container to serve a React app.
Deploy the React frontend to a cloud server using an nginx container and port 8080, copy the dist files, and run the expense tracker frontend on Play with Docker.
Explore how Docker images originate, how to select them, and how they work together to run apps, demystifying Ubuntu and Python images and setting up for frontend deployment.
Explore docker images as immutable blueprints for containers, built in layers with repository and tag, and learn commands like docker image ls and docker image history outlining configuration and caching.
Explore the difference between images and containers: images are templates with read-only files, while containers run as writable, executable instances derived from those images, enabling reusable, space-efficient deployments.
Explore how to find and use images on Docker Hub, including official images and tags. Learn to pull, run, and prune images and containers to manage deployments.
Explore how the docker client, host, and daemon interact, and how docker desktop launches the daemon to pull images and run containers with create, run, start, and -t -p options.
Learn how Docker files create custom images, build backend and frontend images from a dist folder, and set up your Docker image with Visual Studio Code and the Docker extension.
Explore the build context and the Dockerfile, build and tag a Python-based image with the Docker daemon, and learn caching and version pinning for reliable containers.
Compare base images for Docker apps by weighing runtime images, Alpine vs Debian, slim tags, and C library compatibility to optimize size and reliability.
Copy files from the build context into the image using the copy instruction, set a workdir, and use dockerignore to optimize builds and organize app deployment.
Learn how the docker run instruction executes build-time commands to install software, configure the environment, and create layers, while optimizing caching and dependencies.
Learn how the cmd instruction sets a container's default command, how to override it at runtime, and the exact vs shell formats for launching a web server in Docker.
Document the container's runtime ports with expose, noting it doesn't publish ports to the host. Publish when needed, and verify exposed ports with docker image inspect and go template formatting.
Write a Dockerfile to bundle and serve the frontend JavaScript application, installing dependencies and compiling the frontend for proper containerization.
build the front end inside a docker workflow by using a node 23 base, copying package.json, running npm install, and npm run build to produce a dist bundle.
Master multi-stage builds to shrink final images, remove build tools, and reduce attack surface by copying artifacts from the builder to a minimal runtime nginx, with proper index.html serving.
Define build-time and runtime variables in Docker to configure the API base URL for the front end, using ARG for build-time values and ENV for runtime settings.
Learn to add key-value labels to docker images, inherit labels in derived images, and filter or inspect images by label to organize multi-stage builds for frontend and backend.
We containerized both the back end and front end; day one is complete. Prepare for a practice exam while planning to connect backend to a database and a load balancer.
Explore persistent storage in Docker with bind mounts and volumes for stateful databases. Learn how to avoid data loss from ephemeral writable layers by moving data to the host.
Compare bind mounts and volumes in Docker, highlighting that bind mounts link host directories to containers for live changes and development, while volumes are Docker-managed, portable, and persistent for production.
Leverage bind mounts to sync a host directory with a container in real time during development. Use -v or --mount syntax with absolute paths and optional read-only mode.
Discover how Docker volumes provide persistent storage beyond a container’s lifecycle by attaching volumes at creation, using docker run -v or --mount, and managing them with the Docker volume command.
Explore how docker volumes work, including listing with docker volume ls, removing and pruning unused volumes, and handling volumes created automatically by postgres images and dockerfiles.
Initialize a postgres container by setting environment variables for password and db, and loading init SQL scripts via docker-entrypoint-initdb.d, using a volume and bind mount for expanse_tracker.
Explore Docker container networking, including bridge networks, IP addresses, and NAT gateway behavior, and learn to isolate services by creating dedicated networks and choosing bridge, host, or none modes.
Create a custom docker network and connect containers by name for seamless inter-container communication. Launch services on the network, use DNS resolution, and demonstrate connect, ping, and disconnect operations.
Launch and connect the expense tracker backend to a postgres database using a docker network, environment variables, and a deploy script; verify backend readiness via API signup.
Learn to run and link the expense tracker app frontend and backend with docker, configure build-time API base URL, troubleshoot login via cross-origin issues, and prepare for docker compose.
Explore docker compose to replace manual docker run setups by bundling images in a compose yaml, simplifying environment, volumes, scaling, and dependency management with docker compose up.
Set up a React frontend with docker compose by writing a YAML file that defines services, networks, and volumes for a reproducible multi-container deployment.
Set up the backend service in docker compose from back end folder, map host 8080 to container 5001, and set database_host. Launch with docker compose up to observe frontend-backend interaction.
Configure a PostgreSQL database in a docker compose project by adding a DB service with a postgres image, volumes and environment variables, then deploy with docker compose up.
Launch services with docker compose up -d to run in daemon mode, then manage restarting with policies like on-failure, unless-stopped, or always to keep containers available.
Monitor and debug a full-stack docker deployment by using docker compose logs for all and per-service views, and docker compose ps to inspect related containers and status.
Explore how to control startup order with docker compose by launching specific services like the frontend, then using depends_on to ensure the backend starts after the database is running.
Scale front end and back end services horizontally with Docker Compose by setting scale to multiple containers. Databases are stateful and hard to scale; prefer hosted cloud databases.
Learn to add Traefik as a load balancer, expose front end and back end via port mapping, and enable Traefik's dashboard to visualize traffic and manage routes.
Enable Traefik's docker provider to auto-detect containers, then create an http router via docker labels with path prefix and web entrypoint to route to the front end expense tracker.
Configure Traefik labels to route traffic to the front end and back end behind a load balancer, expose ports safely, and debug routing for the /api path.
Learn to use a dot env file to manage database credentials in docker compose, replacing hardcoded passwords with environment variables for development and production security.
Implement docker compose health checks for production, validating front end, back end, and database health with curl tests, return codes, and retry intervals.
Enable a load balancer health check to verify Traefik readiness using a ping endpoint that returns okay at the web entry point. Validate health via docker compose and exit codes.
Learn to automatically restart unhealthy containers using the auto heal image from Docker Hub, leveraging labels, the Docker socket, and a restart policy to monitor health checks and relaunch services.
Deploy a containerized full-stack app with Docker Compose on Play with Docker, configure port 80, and launch the expense tracker while managing deployment artifacts and limits.
This course requires you to download Docker Desktop from Docker (we'll install it together). If you are a Udemy Business user, please check with your employer before downloading software.
Deploying a full-stack app can be complex and time-consuming. This hands-on course solves that problem by teaching you Docker through a real project, so you can containerize and launch applications faster and more reliably. In just 2.5 days, you'll go from Docker novice to confident full-stack app deployer.
Master Docker and Deploy a Full-Stack App in 2.5 Days:
Day 1: Install Docker Desktop and learn the basics: Images, containers, and your very first containerized service.
Day 2: Elevate your setup with environment variables, persistent storage, and advanced networking. Then, you'll orchestrate a multi-service environment using Docker Compose.
Day 2.5: Experience seamless auto-deployment using GitHub, Docker Hub, and Watchtower. Configure a combined dev/prod setup with Docker Compose, so your apps update instantly - no manual redeployment required.
Containerize a Real Project from Scratch:
You won't just learn theory – you'll build an actual full-stack application from scratch, step by step. The project includes a front-end, back-end, and database, all containerized with Docker. By working on this real-world app, you gain practical experience that directly translates to job-ready skills. Once everything is built, you'll deploy the application to a live environment, seeing firsthand how to launch a production-ready service.
Streamlined & Time-Saving Learning:
This course is designed for efficiency. Each lesson is concise and focused, allowing you to progress quickly without feeling overwhelmed. Thanks to the fast-track format, you can complete the entire course in about 2.5 days – perfect for a weekend project. You’ll gain the core Docker knowledge you need, with no fluff or unnecessary detours.
Ready to Dive In?
Don't miss this chance to quickly level up your Docker skills and accelerate your app deployments. Enroll now and start building and deploying with confidence!