Week 5 - Containers & CI/CD

Intro: Containers and CI/CD

Dependency Management

Docker Fundamentals

Azure Container Registry

Python CI Pipeline

Practice

Assignment: Containerize and Ship

Gotchas & Pitfalls

Slides (PDF)

Career relevance: Week 5

Glossary: Week 5

Going Further

History of Containers and CI/CD

Career relevance: Week 5

Indicative as of May 2026: see Sources for current numbers.

This page answers two questions students ask every week: why am I learning this, and how does it help me find a job?

It is scoped to Week 5 content: Docker containers, dependency management with uv, Azure Container Registry, and GitHub Actions CI pipelines. Other weeks' career pages each cover their week's tools. Generic NL junior-data career content lives in one shared page across the curriculum and is not repeated here.

The numbers below are a rough reading of public NL postings as of May 2026. They are indicative, not measured. Placeholders are marked ~XX% for future replacement with measured percentages.

How containers and CI show up in NL postings

Containerization and CI/CD have moved from "nice to have" to a baseline expectation at most NL data teams in the last two years. Docker is named explicitly in a large share of engineer-track postings; CI is named in fewer but implied by nearly all that mention "production" or "automated deployment."

Role Postings expecting containers and CI What the posting expects
Data Engineer (DE) ~75% Hands-on. "Docker", "containerized pipelines", "GitHub Actions or Azure DevOps", "push to a registry". Week 5 maps directly to these job requirements.
Analytics Engineer (AE) ~30% Lighter expectation: AE roles often own the dbt layer and rely on platform teams for containers. Some postings mention "comfortable with Docker" as a plus.
Data Scientist (DS) ~40% ML-engineer-adjacent roles (recommender systems, production model serving) expect the full Docker + CI stack. Pure research DS roles rarely mention it.
Data Analyst (DA) ~10% Rarely required. Scale-ups hiring technical analysts occasionally mention it as a plus, not a requirement.

The directional shape: DE roles treat Docker and CI as table-stakes; AE and ML roles use them selectively; DA roles rarely require them. If you are aiming at DE, this week is the floor that separates candidates who can "write a pipeline" from candidates who can "ship a pipeline."

The Week 5 stack vs NL alternatives

Concept Tool taught Common NL alternatives Practical implication
Container runtime Docker Podman (rootless, used in some enterprise environments), containerd OCI-standard images work across all runtimes. The build commands differ slightly, but the Dockerfile and image format transfer.
Container registry Azure Container Registry (ACR) Docker Hub (public registries, less common for production), Amazon ECR, Google Artifact Registry, Harbor (self-hosted) Registries follow the same push/pull API. The auth flow (az acr login vs aws ecr get-login-password) differs, but the concepts are identical.
Dependency management uv + uv.lock Poetry + poetry.lock (common at NL scale-ups), Conda (data-science heavy shops), plain pip + requirements.txt (legacy codebases) Lock files from different tools serve the same purpose. uv is newer and faster; Poetry is older and more established. You will encounter both.
CI platform GitHub Actions Azure DevOps Pipelines (common at NL enterprises, especially banks and government), GitLab CI (tech companies), Bitbucket Pipelines (Atlassian shops) The YAML syntax differs; the concepts (trigger, job, step, secret) transfer exactly. Week 5 teaches the concepts, not just the GitHub Actions syntax.
Secrets management GitHub Secrets Azure Key Vault (covered in Week 12), AWS Secrets Manager, HashiCorp Vault GitHub Secrets is the entry point. Production teams layer in Key Vault for long-lived credentials managed outside a single repo.

What this means for your CV: name the tools you used, but frame the skills as transferable. "Built and pushed Docker images to Azure Container Registry via a GitHub Actions CI workflow" communicates the skills regardless of which registry or CI platform the interviewer uses.

Junior vs medior expectations

Postings phrase the expectation at three levels:

Week 5 is the foundation for the medior expectation. The hands-on ACR push, commit SHA tagging, and GitHub Actions CI workflow give you the vocabulary and the artifact to demonstrate in an interview.

How Week 5 work signals on a CV

Strong line a student can copy-adapt:

Containerized a Python ingestion pipeline using Docker: wrote a cache-friendly Dockerfile (dependency layers separate from source), used uv sync --frozen --no-dev to pin exact production dependencies, tagged images with the Git commit SHA for traceability, pushed to Azure Container Registry via a GitHub Actions workflow triggered on every pull request, and stored Azure credentials as an encrypted GitHub Secret.

Recruiter keywords this carries: Docker, Dockerfile, Azure Container Registry, GitHub Actions, CI/CD, uv, pinned dependencies, commit SHA tagging, GitHub Secrets, containerized Python.

Weaker alternative for contrast (avoid):

Used Docker to package my pipeline.

The weaker version is true but says nothing a junior who typed docker build once could not also say. The strong version names the specific patterns, the specific tools, and the specific decisions.

Interview phrasing for the Week 5 assignment

Three sentences that cover the assignment cleanly when an interviewer asks "tell me about a project you have built":

  1. "I containerized a Python ingestion pipeline: I wrote a Dockerfile that copied the dependency lock file first, installed with uv sync --frozen --no-dev, then copied source. That order means editing a single Python file does not trigger a full dependency reinstall during the Docker build, which matters when CI runs the build on every push."
  2. "For the registry, I pushed to Azure Container Registry and tagged each image with the commit SHA from ${{ github.sha }}. That way every deployed image is traceable back to the exact commit: if something breaks in production I can roll back to the previous SHA tag and know exactly what code I am running."
  3. "The CI workflow runs ruff lint and pytest before the Docker build, so the build only runs when the code is already clean. I stored the Azure service principal JSON as an encrypted GitHub Secret and used the azure/login action in the workflow so the runner could push to ACR without storing credentials in the repo."

Two honest follow-ups if asked "what would you do differently?":

What Week 5 does not make you

Week 5 is the packaging and verification layer, not the deployment layer. After this week you are not yet:

These are the senior-shaped skills the chapter does not yet make you qualified for. Naming them honestly in an interview is more impressive than overclaiming.

Sources

Mark this page indicative, not statistical. Numbers will be replaced with measured percentages once the postings-crawler project ships.


<aside> 💭 For generic NL junior data-career content (salary bands, day-to-day work, what employers do not expect from any junior), one shared page across all weeks is the right home. That page does not exist yet; for now, treat this page as Week-5-specific only.

</aside>


The HackYourFuture curriculum is licensed under CC BY-NC-SA 4.0 *https://hackyourfuture.net/*

CC BY-NC-SA 4.0 Icons

Built with ❤️ by the HackYourFuture community · Thank you, contributors

Found a mistake or have a suggestion? Let us know in the feedback form.