Многоэтапную сборку в докере сочинять?

nicolas спросил: 07 октября 2018 в 10:19 в: docker

Как я могу указать многоэтапную сборку в docker-compose.yml?

Для каждого варианта (например, dev, prod ...) у меня есть многоэтапная сборка с 2 файлы докера:

  • dev: Dockerfile.base + Dockerfile.dev
  • или prod: Dockerfile.base + Dockerfile.prod

Файл Dockerfile.base (общий для всех вариантов):

FROM python:3.6
RUN apt-get update && apt-get upgrade -y
RUN pip install pipenv pip
COPY Pipfile ./
# some more common configuration...

Файл Dockerfile.dev:

FROM flaskapp:base
RUN pipenv install --system --skip-lock --dev
ENV FLASK_ENV development
ENV FLASK_DEBUG 1

Файл Dockerfile.prod:

FROM flaskapp:base
RUN pipenv install --system --skip-lock
ENV FLASK_ENV production

Без docker-compose я могу создать как :

# Building dev
docker build --tag flaskapp:base -f Dockerfile.base .
docker build --tag flaskapp:dev -f Dockerfile.dev .
# or building prod
docker build --tag flaskapp:base -f Dockerfile.base .
docker build --tag flaskapp:dev -f Dockerfile.dev .

В соответствии с документом compose-file, я могу указать Dockerfile для сборки.

# docker-compose.yml
version: '3'
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate

Но как я могу указать 2 файла Docker в docker-compose.yml (для многоэтапной сборки)?

0 ответов