
Test: ``` crl-m1:black cooper$ docker build --tag black_3_12 . ... => [stage-1 2/2] COPY --from=builder /opt/venv /opt/venv 0.2s => exporting to image 0.1s => => exporting layers 0.1s => => writing image sha256:bd66acc9d76d2c40d287b0684ce6601401631e0468204c4e6a81f8f1eebaf1dd 0.0s => => naming to docker.io/library/black_3_12 crl-m1:black cooper$ docker image ls | grep black_3_12 black_3_12 latest bd66acc9d76d 59 seconds ago 193MB ```
22 lines
718 B
Docker
22 lines
718 B
Docker
FROM python:3.12-slim AS builder
|
|
|
|
RUN mkdir /src
|
|
COPY . /src/
|
|
ENV VIRTUAL_ENV=/opt/venv
|
|
ENV HATCH_BUILD_HOOKS_ENABLE=1
|
|
# Install build tools to compile black + dependencies
|
|
RUN apt update && apt install -y build-essential git python3-dev
|
|
RUN python -m venv $VIRTUAL_ENV
|
|
RUN python -m pip install --no-cache-dir hatch hatch-fancy-pypi-readme hatch-vcs
|
|
RUN . /opt/venv/bin/activate && pip install --no-cache-dir --upgrade pip setuptools \
|
|
&& cd /src && hatch build -t wheel \
|
|
&& pip install --no-cache-dir dist/*-cp*[colorama,d,uvloop]
|
|
|
|
FROM python:3.12-slim
|
|
|
|
# copy only Python packages to limit the image size
|
|
COPY --from=builder /opt/venv /opt/venv
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
|
|
CMD ["/opt/venv/bin/black"]
|