📖 Scenario: You work in a team that builds a simple web application using Docker containers. Your team wants to automate the deployment process so that every time new code is ready, it automatically builds and deploys the Docker container using a CI/CD pipeline.This project will guide you through creating a basic Docker setup and a simple CI/CD pipeline script to deploy your container.
🎯 Goal: Build a Docker image for a simple web app and write a CI/CD pipeline script that builds and deploys the Docker container automatically.
📋 What You'll Learn
Create a Dockerfile for a simple web app
Define a variable for the Docker image name
Write a shell script to build and deploy the Docker image
Print the deployment status
💡 Why This Matters
🌍 Real World
Automating Docker container deployment is common in software teams to speed up delivery and reduce manual errors.
💼 Career
Knowing how to create Docker images and automate deployment with scripts is a key skill for DevOps engineers and developers working with containers.
Progress0 / 4 steps
1
Create a Dockerfile for a simple web app
Create a file named Dockerfile with these exact contents: FROM nginx:alpine COPY ./html /usr/share/nginx/html This will use the nginx alpine image and copy your web files to the container.
Docker
Hint
Think of the Dockerfile as a recipe. The first line picks the base image, and the second line copies your website files inside the container.
2
Define a Docker image name variable
In a new file named deploy.sh, create a variable called IMAGE_NAME and set it to mywebapp:latest.
Docker
Hint
Variables in shell scripts are set with NAME=value without spaces.
3
Write a shell script to build and deploy the Docker image
In the deploy.sh file, add commands to build the Docker image using docker build -t $IMAGE_NAME . and then run the container with docker run -d -p 8080:80 $IMAGE_NAME.
Docker
Hint
Use docker build to create the image and docker run to start the container in detached mode.
4
Print the deployment status
At the end of deploy.sh, add a line to print Deployment of $IMAGE_NAME completed successfully! using echo.
Docker
Hint
Use echo to print messages in shell scripts.
Practice
(1/5)
1. What is the main purpose of using a CI/CD pipeline when deploying Docker applications?
easy
A. To manually update Docker images on each server
B. To write Dockerfiles faster
C. To automate building, testing, and deploying Docker containers
D. To monitor server hardware performance
Solution
Step 1: Understand CI/CD pipeline role
A CI/CD pipeline automates repetitive tasks like building and deploying software.
Step 2: Apply to Docker deployment
For Docker apps, it automates building images, pushing them, and deploying containers.
Final Answer:
To automate building, testing, and deploying Docker containers -> Option C
What will happen after this pipeline runs successfully?
medium
A. The Kubernetes deployment will update to use the new Docker image tagged 1.0
B. The Docker image will be deleted from the registry
C. The deployment will roll back to the previous image
D. The Docker image will only be built locally without pushing
Solution
Step 1: Analyze build and push steps
The pipeline builds the image tagged 'myapp:1.0' and pushes it to the registry.
Step 2: Analyze deployment step
The command updates the Kubernetes deployment to use the new image 'myapp:1.0'.
Final Answer:
The Kubernetes deployment will update to use the new Docker image tagged 1.0 -> Option A
Quick Check:
Build + push + deploy = update deployment [OK]
Hint: Build, push, then deploy updates the app [OK]
Common Mistakes:
Assuming image is only local, not pushed
Thinking deployment rolls back automatically
Confusing deployment update with image deletion
4. A CI/CD pipeline fails at the deployment step with the error: kubectl: error: no deployment found. What is the most likely cause?
medium
A. The Docker image failed to build
B. The Kubernetes deployment name is incorrect or missing
C. The Docker push command was missing
D. The pipeline YAML syntax is invalid
Solution
Step 1: Understand the error message
The error says no deployment found, meaning Kubernetes cannot find the named deployment.
Step 2: Identify cause in deployment step
This usually happens if the deployment name in the kubectl set image command is wrong or missing.
Final Answer:
The Kubernetes deployment name is incorrect or missing -> Option B
Quick Check:
No deployment found = wrong deployment name [OK]
Hint: Check deployment name spelling in kubectl command [OK]
Common Mistakes:
Blaming build or push steps for deployment error
Ignoring error details about deployment not found
Assuming YAML syntax error without checking logs
5. You want to deploy a new version of your Docker app automatically only if tests pass in your CI/CD pipeline. Which sequence of steps is best to ensure this?
hard
A. Run tests -> Build Docker image -> Push image -> Deploy to production
B. Build Docker image -> Push image -> Run tests -> Deploy to production
C. Push image -> Run tests -> Build Docker image -> Deploy to production
D. Deploy to production -> Run tests -> Build Docker image -> Push image
Solution
Step 1: Understand the logical order for safe deployment
Tests must run first to verify code correctness before building and deploying.
Step 2: Confirm correct step sequence
After tests pass, build the Docker image, push it to the registry, then deploy to production.
Final Answer:
Run tests -> Build Docker image -> Push image -> Deploy to production -> Option A
Quick Check:
Tests first, then build, push, deploy [OK]
Hint: Always test before building and deploying [OK]
Common Mistakes:
Building or pushing before tests pass
Deploying before tests run
Running tests after deployment
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.