Bird
Raised Fist0
Dockerdevops~30 mins

Deploying from CI/CD pipeline in Docker - Mini Project: Build & Apply

Choose your learning style10 modes available
Deploying from CI/CD pipeline
📖 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

  1. Step 1: Understand CI/CD pipeline role

    A CI/CD pipeline automates repetitive tasks like building and deploying software.
  2. Step 2: Apply to Docker deployment

    For Docker apps, it automates building images, pushing them, and deploying containers.
  3. Final Answer:

    To automate building, testing, and deploying Docker containers -> Option C
  4. Quick Check:

    Automation = CI/CD pipeline purpose [OK]
Hint: CI/CD pipelines automate repetitive Docker deployment tasks [OK]
Common Mistakes:
  • Thinking CI/CD is for manual updates
  • Confusing CI/CD with monitoring tools
  • Believing CI/CD only speeds up coding
2. Which of the following is the correct Docker command to push an image to a registry in a CI/CD pipeline?
easy
A. docker run myimage:latest
B. docker pull myimage:latest
C. docker build myimage:latest
D. docker push myimage:latest

Solution

  1. Step 1: Identify the command to upload images

    The docker push command uploads images to a registry.
  2. Step 2: Confirm correct syntax

    docker push myimage:latest correctly pushes the image tagged 'latest'.
  3. Final Answer:

    docker push myimage:latest -> Option D
  4. Quick Check:

    Push = upload image [OK]
Hint: Push uploads images; pull downloads images [OK]
Common Mistakes:
  • Using pull instead of push to upload
  • Using build or run commands to push
  • Missing image tag in push command
3. Given this snippet in a CI/CD pipeline YAML file:
steps:
  - name: Build image
    run: docker build -t myapp:1.0 .
  - name: Push image
    run: docker push myapp:1.0
  - name: Deploy
    run: kubectl set image deployment/myapp myapp=myapp:1.0

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

  1. Step 1: Analyze build and push steps

    The pipeline builds the image tagged 'myapp:1.0' and pushes it to the registry.
  2. Step 2: Analyze deployment step

    The command updates the Kubernetes deployment to use the new image 'myapp:1.0'.
  3. Final Answer:

    The Kubernetes deployment will update to use the new Docker image tagged 1.0 -> Option A
  4. 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

  1. Step 1: Understand the error message

    The error says no deployment found, meaning Kubernetes cannot find the named deployment.
  2. Step 2: Identify cause in deployment step

    This usually happens if the deployment name in the kubectl set image command is wrong or missing.
  3. Final Answer:

    The Kubernetes deployment name is incorrect or missing -> Option B
  4. 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

  1. Step 1: Understand the logical order for safe deployment

    Tests must run first to verify code correctness before building and deploying.
  2. Step 2: Confirm correct step sequence

    After tests pass, build the Docker image, push it to the registry, then deploy to production.
  3. Final Answer:

    Run tests -> Build Docker image -> Push image -> Deploy to production -> Option A
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard