AccueilBlogTest technique Docker et Docker Compose pour la data : stacks locales
Guide recrutement data

Test technique Docker et Docker Compose pour la data : stacks locales

Docker est le pre-requis pour tout Data Engineer moderne. En entretien, on va au-dela du simple docker run — on evalue la capacite a architecturer des stacks locales et des images optimisees.

Data Builder·Juin 2025·6 min de lecture·Data Engineer
Sommaire
  1. Dockerfile optimise pour la data
  2. Docker Compose : stack data locale
  3. Networking et volumes
  4. Multi-stage builds
  5. Image registry et CI
  6. Docker vers Kubernetes
  7. Grille

1Dockerfile optimise pour un projet data

Question discriminante

Quelles sont les bonnes pratiques pour un Dockerfile Python data ?

# Multi-stage build : image finale legere FROM python:3.11-slim AS builder WORKDIR /app COPY requirements.txt . # --no-cache-dir : reduit la taille de l image RUN pip install --no-cache-dir --user -r requirements.txt # Image finale : ne pas copier pip, seulement les packages installes FROM python:3.11-slim WORKDIR /app # Copier seulement les packages installes COPY --from=builder /root/.local /root/.local COPY . . # Pas de root en production RUN useradd -m appuser USER appuser # Variables d environnement ENV PATH=/root/.local/bin:$PATH ENV PYTHONUNBUFFERED=1 CMD ['python', 'main.py']

2Docker Compose : stack data locale complete

Question discriminante

Comment monteriez-vous une stack data locale avec Airflow, PostgreSQL et dbt ?

version: '3.8' services: postgres: image: postgres:15 environment: POSTGRES_DB: datadb POSTGRES_USER: data POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql ports: - '5432:5432' healthcheck: test: ['CMD', 'pg_isready', '-U', 'data'] interval: 10s airflow: image: apache/airflow:2.9.0 depends_on: postgres: condition: service_healthy environment: AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://data:${POSTGRES_PASSWORD}@postgres/airflow volumes: - ./dags:/opt/airflow/dags - ./logs:/opt/airflow/logs ports: - '8080:8080' dbt: build: ./dbt depends_on: [postgres] volumes: - ./dbt:/dbt command: ['dbt', 'run'] volumes: postgres_data:

3Networking : comment les services communiquent

Question discriminante

Comment un service Airflow appelle-t-il un service PostgreSQL dans Docker Compose ?

4Multi-stage builds : optimiser la taille

Question discriminante

Pourquoi utilise-t-on les multi-stage builds ? Quelle reduction de taille obtient-on typiquement ?

5Registry et CI/CD des images

Question discriminante

Comment organisez-vous la gestion des images Docker dans un projet data d equipe ?

6De Docker Compose vers Kubernetes

7Grille par niveau

NiveauMaitriseSignal GONO-GO
JuniorDockerfile basique, docker run, docker-compose upSait ecrire un Dockerfile Python, lance une stack avec ComposeNe sait pas ce qu est un volume
ConfirmeMulti-stage, healthchecks, networking Compose, .dockerignoreUtilise multi-stage, configure les healthchecks, sait pourquoi postgres:5432 marche entre servicesUtilise :latest partout, ne connait pas les multi-stage builds
SeniorRegistry CI/CD, securite (non-root, secrets), migration K8sA configure le push automatique en CI, utilise des users non-root, connait komposePousse des images avec des credentials en dur dans le Dockerfile

Vous recrutez un Data Engineer ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.