Несколько Docker-контейнеров, использующих идентичные Dockerfiles - PullRequest
0 голосов
/ 15 октября 2019

В проекте, над которым я работал, есть несколько микросервисов, каждый из которых построен из собственного Dockerfile. Dockerfiles для четырех из них абсолютно идентичны:

#Dockerfile

FROM python:3.7

RUN pip install pip --upgrade
RUN pip install pipenv

COPY Pipfile.lock /code/Pipfile.lock
COPY Pipfile /code/Pipfile

WORKDIR /code
RUN pipenv install --system --deploy

Контейнеры создаются с помощью docker-compose.

Мне было предложено "сделать что-то" с этими идентичными Docker-файлами,однако я не уверен, есть ли в этом смысл.

С одной стороны, это, очевидно, повторяющийся код, и я полагаю, что я мог бы просто использовать одну копию файла Dockerfile для всех четырех служб (например, встроенныхэти четыре контейнера в соответствии с одним и тем же рецептом), но с другой - я полагаю, что если в будущем понадобится что-то изменить в одном из изображений, всю настройку придется снова изменить.

Я не нашел подобных случаев, описанных в интернете. Есть ли "хорошая практика" в такой ситуации? Каковы будут преимущества (есть ли?) Использования одного Dockerfile?

1 Ответ

0 голосов
/ 15 октября 2019

вы можете создать образ и вместо

# Dockerfile

FROM python:3.7

RUN pip install pip --upgrade
RUN pip install pipenv

COPY Pipfile.lock /code/Pipfile.lock
COPY Pipfile /code/Pipfile

WORKDIR /code
RUN pipenv install --system --deploy

# Dockerfile Replace

FROM python:3.7

RUN pip install pip --upgrade
RUN pip install pipenv 
RUN mkdir /code 
WORKDIR /code
RUN pipenv install --system --deploy

docker-compose

  service1:
    container_name: name1
    image: yourimage
    volumes:
      - ./service1/files/:/code
  service2:
    container_name: name2
    image: yourimage
    volumes:
      - ./service2/files/:/code
  service3:
    container_name: name3
    image: yourimage
    volumes:
      - ./service3/files/:/code
...