docker-uv-image-builds
Original:🇺🇸 English
Translated
Build Docker images for Python services following team conventions. Use this skill when writing Dockerfiles, authoring CI image build pipelines, or adding a new service — covers mitodl image naming, git short-ref tags, relocatable uv venvs, and shared library handling.
33installs
Sourcemitodl/agent-kit
Added on
NPX Install
npx skill4agent add mitodl/agent-kit docker-uv-image-buildsTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Docker Image Builds for Python Services
Image naming
Images follow the pattern:
mitodl/<service-name>The service name should match the application or code location name used elsewhere
in configuration (Helm values, Pulumi stacks, Concourse pipelines).
Image tags
Tag images with the git short ref (7-character SHA):
bash
GIT_TAG=$(git rev-parse --short HEAD)
docker build -t mitodl/${SERVICE_NAME}:${GIT_TAG} .Do not use as a production tag.
latestPython environment inside the image
Use a relocatable virtual environment so the venv works after Docker layer
assembly:
dockerfile
WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN uv venv --relocatable /app/.venv && \
uv sync --frozen --no-devShared libraries
Install shared internal libraries (e.g. ) as build-time
dependencies — do not mount them as Docker volumes at runtime. Add them to
and let install them during the image build.
ol-orchestrate-libpyproject.tomluv syncBuild context & .dockerignore
.dockerignoreExclude development artifacts:
.venv/
__pycache__/
*.pyc
.git/Concourse CI integration
Concourse pipelines use filters on git resources to trigger image
rebuilds only when relevant files change. When adding a new service, add its
path to the corresponding pipeline's git resource list.
paths:paths