Building Docker image with Python can be well quite heavy.
For a multistage build for example, instead of building wheels at each, you can specify a path for the python environment once it's initialized at the first stage of the build.
ENV PATH="/opt/venv/bin:$PATH"
Make sure you have created the virtual environment tho.👀
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
Here's an example with two steps:
# first stage
FROM python:3.10-slim as builder
WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN pip install virtualenv
RUN virtualenv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
COPY requirements.txt .
RUN pip install -r requirements.txt
# another stage
FROM python:3.10-slim
COPY --from=builder /opt/venv /opt/venv
WORKDIR /app
ENV PATH="/opt/venv/bin:$PATH"
Summary
In conclusion, here are the steps again 🚀:
- Create the virtual environment in the builder image
- Copy the virtual environment to the final image
Article posted using bloggu.io. Try it for free.
Latest comments (3)
What's the size difference between doing it one way vs another? Would love a comparison screenshot if you've got one.
Nicee ...
🚀