Help generating docker images from PDM projects
Project description
pdm-dockerize
Help generating docker image from PDM projects
Installation
Install pdm-dockerize
:
With pipx
If you installed pdm
with pipx
and want to have the command for all projects:
pipx inject pdm pdm-dockerize
With pip
If you manually installed pdm
with pip
, just install the extra dependency in the same environment:
pip install pdm-dockerize
With pdm
You can also install it as a standard pdm
plugin.
Either globally:
pdm self install pdm-dockerize
Either as a local plugin in your project:
[tool.pdm]
plugins = [
"pdm-dockerize",
]
Then:
pdm install --plugins
Usage
Just use pdm dockerize
in your multistage build:
# syntax=docker/dockerfile:1
ARG PY_VERSION=3.11
##
# Build stage: build and install dependencies
##
FROM python:${PY_VERSION} AS builder
ARG VERSION=0.dev
ENV PDM_BUILD_SCM_VERSION=${VERSION}
WORKDIR /project
# install PDM
RUN pip install -U pip setuptools wheel
RUN pip install pdm pdm-dockerize
RUN --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
--mount=type=bind,source=pdm.lock,target=pdm.lock \
--mount=type=cache,target=$HOME/.cache,uid=$UUID \
pdm dockerize --prod -v
##
# Run stage: create the final runtime container
##
FROM python:${PY_VERSION} AS runtime
WORKDIR /app
# Fetch built dependencies
COPY --from=builder /project/dist/docker /app
# Copy needed files from your project (filter using `.dockerignore`)
COPY . /app
ENTRYPOINT ["/app/entrypoint"]
CMD ["your-default-command"]
Selecting scripts
By default, the dockerize
command will render a script without any command as it does not select any script by default.
You can select scripts with the include
and exclude
properties of the tool.pdm.dockerize
section.
Those properties are optional, can be either a string or list of string.
Each string is a fnmatch
filter pattern
Dockerize first select script based on the include patterns and then filter-out those matching with any exclude pattern.
Include all scripts
[tool.pdm.dockerize]
include = "*"
Include some specific scripts
[tool.pdm.dockerize]
include = ["my-script", "my-other-script"]
Include all scripts excluding those matching prefix-*
[tool.pdm.dockerize]
include = "*"
exclude = "prefix-*"
Include all scripts matching a prefix but two
[tool.pdm.dockerize]
include = "prefix-*"
exclude = ["prefix-not-you", "prefix-you-neither"]
Selecting binaries
By default, the dockerize
command will not copy any python executable.
You can select binaries with the include_bins
and exclude_bins
properties of the tool.pdm.dockerize
section.
Syntax and behavior are exactly the exact sames than include
/exclude
for script selection.
Contributing
Read the dedicated contributing guidelines.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pdm_dockerize-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd65b494faedfebb855a5bb9291986e3ba3f40cc8c2f7ef01419c2ece77aff59 |
|
MD5 | 13d68e412dfacdf25dbb27b4c24d7db3 |
|
BLAKE2b-256 | b029176a9b1ef437d3f09e0c83e9d4118b7ab5fb43205dbdf2de04e771a9c258 |