Повторное использование изображения, созданного одним сервисом в другом сервисе - PullRequest
0 голосов
/ 25 апреля 2018

Допустим, у меня есть такая структура проекта:

proj/
├── docker
│   └── myservice
│       └── Dockerfile
└── docker-compose.yml

И это мой docker-compose.yml:

version: '3'

services:

  master:
      build: docker/myservice

  slave:
      image: proj_master
      depends_on: master

Я хочу, чтобы сервис master создал изображение, котороебудет использоваться службами master и slave (с другими параметрами, не показанными здесь).Методом проб и ошибок я обнаружил, что раб должен ссылаться на изображение proj_master.

  • Где это задокументировано?
  • Почему мне нужно сделать ссылку наproj?Обычно файл docker composer не зависит от того, где он находится ...

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Docker Compose создает ваше изображение с именем proj_master, поскольку вы не указали имя изображения в службе master в файле Compose.

У вас есть раздел build, поэтому Docker Compose создаст образ и даст ему имя на основе вашего <directory_name_where_you_run_compose>_<service_name>:latest. Я не нашел этого в документации, но попробовал с одним из моих проектов, и это соответствует тому, что вы испытали.

Вы можете исправить свой проект, указав имя изображения в файле Compose и используя одно и то же изображение для обеих служб:

version: '3'


services:

  master:
      build: docker/myservice
      image: username/masterimage:version


  slave:
      image: username/masterimage:version
      depends_on: master
0 голосов
/ 25 апреля 2018

Если вы используете следующий синтаксис в docker-compose.yaml, изображение будет создано один раз мастером, а затем использовано ведомым:

version: '3'

services:
  master:
    build: docker/myservice
    image: master-image:3

  slave:
    image: master-image:3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...