Multi-Stage Build
Multi-Stage Build дозволяє створювати більш ефективні та менші Image за допомогою декількох білд-етапів в одному Dockerfile. Кожен етап може створювати проміжний Image та файли, які доступні тільки в межах конкретного етапу. Це може бути корисним, коли для створення ресурсів чи білду бібліотек додатка нам потрібні додаткові інструменти, але для запуску додатка не потрібні.
# Build stage
ARG PYTHON_VERSION=3.8
FROM python:${PYTHON_VERSION} AS base
WORKDIR /app
# Copy the application code into the container
COPY app-updated.py docker-logo.png requirements.txt ./
# Runtime stage
FROM python:${PYTHON_VERSION}-slim
WORKDIR /app
# Set an environment variable for the runtime
ENV APP_ENV="Development"
# Copy the built application and installed dependencies from the build stage
COPY --from=base /app .
RUN pip install --upgrade pip && \
pip install -r requirements.txt
# Expose port 8080 to the host
EXPOSE 8080
# Define the command to run the application
CMD ["python", "app-updated.py"]
!!! Завдяки Multi-Stage Build в одному Dockerfile, ми можемо використати декілька базових Images, у кожного з яких можуть бути специфічні інструменти для створення ресурсів.