Deploying from CI/CD pipeline in Docker - Time & Space Complexity
When deploying applications using Docker in a CI/CD pipeline, it is important to understand how the deployment time changes as the project grows.
We want to know how the steps in the pipeline scale when more services or containers are added.
Analyze the time complexity of the following Docker deployment snippet in a CI/CD pipeline.
# Build and push multiple Docker images
for service in service1 service2 service3; do
docker build -t myrepo/$service:latest ./services/$service
docker push myrepo/$service:latest
docker service update --image myrepo/$service:latest $service
sleep 5
done
This script builds, pushes, and updates Docker services for each microservice in the list.
Look for repeated steps that affect total time.
- Primary operation: Loop over each service to build, push, and update.
- How many times: Once per service (3 times in this example, but can grow with more services).
As the number of services increases, the total deployment time grows roughly in direct proportion.
| Input Size (n) | Approx. Operations |
|---|---|
| 3 | 3 builds + 3 pushes + 3 updates |
| 10 | 10 builds + 10 pushes + 10 updates |
| 100 | 100 builds + 100 pushes + 100 updates |
Pattern observation: Doubling the number of services roughly doubles the total deployment time.
Time Complexity: O(n)
This means the deployment time grows linearly with the number of services being deployed.
[X] Wrong: "Adding more services won't affect deployment time much because each step is fast."
[OK] Correct: Each service requires separate build, push, and update steps, so total time adds up with more services.
Understanding how deployment time scales helps you design efficient pipelines and shows you can think about real-world system growth.
What if we ran the builds and pushes in parallel instead of sequentially? How would the time complexity change?
Practice
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 CQuick Check:
Automation = CI/CD pipeline purpose [OK]
- Thinking CI/CD is for manual updates
- Confusing CI/CD with monitoring tools
- Believing CI/CD only speeds up coding
Solution
Step 1: Identify the command to upload images
Thedocker pushcommand uploads images to a registry.Step 2: Confirm correct syntax
docker push myimage:latestcorrectly pushes the image tagged 'latest'.Final Answer:
docker push myimage:latest -> Option DQuick Check:
Push = upload image [OK]
- Using pull instead of push to upload
- Using build or run commands to push
- Missing image tag in push command
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.0What will happen after this pipeline runs successfully?
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 AQuick Check:
Build + push + deploy = update deployment [OK]
- Assuming image is only local, not pushed
- Thinking deployment rolls back automatically
- Confusing deployment update with image deletion
kubectl: error: no deployment found. What is the most likely cause?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 thekubectl set imagecommand is wrong or missing.Final Answer:
The Kubernetes deployment name is incorrect or missing -> Option BQuick Check:
No deployment found = wrong deployment name [OK]
- Blaming build or push steps for deployment error
- Ignoring error details about deployment not found
- Assuming YAML syntax error without checking logs
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 AQuick Check:
Tests first, then build, push, deploy [OK]
- Building or pushing before tests pass
- Deploying before tests run
- Running tests after deployment
Ready to prove it?
Pass the test and this pattern moves unknown
