Дубликаты изображений в сборке docker -compose. Как правильно перенести sh две службы из docker -compose.yml на Docker хаб реестра? - PullRequest
0 голосов
/ 02 августа 2020

У меня есть docker-compose.yml, определенный следующим образом с двумя службами (база данных и приложение):

version: '3'

services:
  db:
    build: .
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=(adminname)
      - POSTGRES_PASSWORD=(adminpassword)
      - CLOUDINARY_URL=(cloudinarykey)
  app:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db

Причина, по которой у меня build: . в обеих службах, связана с тем, что вы не можете сделайте docker-compose push, если у вас нет build во всех службах. Однако это означает, что обе службы ссылаются на один и тот же файл Dockerfile, который создает все приложение. Итак, после того, как я запустил docker-compose build и посмотрю на доступные изображения, я вижу следующее:

$ docker images   
    
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
mellon_app              latest              XXXXXXXXXXXX        27 seconds ago      1.14GB
postgres                latest              XXXXXXXXXXXX        27 seconds ago      1.14GB

IMAGE_ID точно такой же для обоих изображений, размер точно такой же для обоих изображений. Это заставляет меня думать, что я определенно сделал ненужное дублирование, поскольку они оба используют один и тот же Dockerfile. Я не хочу занимать лишнее место, как мне это сделать правильно?

Это мой файл Docker:

FROM (MY FRIENDS ACCOUNT)/django-npm:latest

RUN mkdir usr/src/mprova

WORKDIR /usr/src/mprova

COPY frontend ./frontend
COPY backend ./backend

WORKDIR /usr/src/mprova/frontend

RUN npm install
RUN npm run build

WORKDIR /usr/src/mprova/backend

ENV DJANGO_PRODUCTION=True
RUN pip3 install -r requirements.txt

EXPOSE 8000

CMD python3 manage.py collectstatic && \
    python3 manage.py makemigrations && \
    python3 manage.py migrate && \
    gunicorn mellon.wsgi --bind 0.0.0.0:8000

Как правильно sh образы в мой реестр хаба Docker без этого дублирования?

1 Ответ

1 голос
/ 02 августа 2020

правильный способ - сделать

  1. docker build -f {path-to-dockerfile} -t {desired-docker-image-name}.

  2. docker tag {desired-docker-image-name}:latest {desired-remoute-image-name}:latest или не latest, но то, что вы хотите, например datetime в формате int

  3. docker push {desired-remoute-image-name}:latest

и очистка: 4. docker rmi {desired-docker-image-name}:latest {desired-remoute-image-name}:latest

вся цель docker-compose Это помогает вашей локальной разработке, поэтому проще запустить несколько модулей и объединить их в локальной сети docker -compose и et c.

...