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, у кожного з яких можуть бути специфічні інструменти для створення ресурсів.