Что означает тег «изображение» в docker -композиции? - PullRequest
0 голосов
/ 07 апреля 2020

У меня возникают проблемы с пониманием того, как именно используется опция "image" в следующем файле docker -compose.

  1. В сервисе api тег изображения выглядит так, как будто он был используется для имени встроенного образа API как server
  2. Однако в сервисе redis тег image выглядит как указание docker, какое изображение извлекать из dockerhub.
  3. И наконец, какое изображение вытягивает сервис worker? Нет тега сборки для ссылки на dockerfile, и нет изображения, которое нужно извлечь. Не определено app изображение, так что вы действительно не понимаете, как это работает?
version: '3'


services:
  api:
    build: ./server
    image: server
    ports:
      - "5000:5000"
    volumes:
      - ./server:/usr/src/server
    command: "python -m server.app"
    restart: always
    env_file:
      - ./dev.env
  redis:
    image: redis:latest
    expose:
      - "6379"
    command: ["sh", "-c", "redis-server --appendonly yes"]
    restart: always
    depends_on:
      - api 
  worker:
    image: app
    volumes:
      - .:/app
    command: "python -m server.worker"
    restart: always
    env_file:
      - ./dev.env
    depends_on:
      - redis

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Я думаю, что документация для image это хорошо объясняет.

Разница в основном в том, существуют ли изображения или нет. Если он не существует, тег изображения будет использоваться build для создания изображения и присвоения ему имени, используя значение тега image.

Чтобы ответить на ваши вопросы напрямую:

  1. Служба api создаст образ с именем server, если он не существует
  2. Служба redis запустит образ `redis: latest. Если оно существует локально (вытащено), будет использовано это изображение. Если нет, то по умолчанию используется dockerhub и выполняется его извлечение.
  3. Служба worker использует образ с именем app.
.
0 голосов
/ 07 апреля 2020

Так же, как вы заметили, опция image имеет два разных определения в зависимости от того, как она указана в файле композиции.

1) Если указана опция image, а build - нет, затем составьте попытки извлечь изображение из локального или из хранилища.

2) Если указаны оба параметра image и build, составьте теги для встроенного изображения с этим именем.

Если тега нет, в качестве тега принимается latest. В вашей службе worker, если изображение app:latest не доступно ни в локальном, ни в удаленном репозитории, оно выдаст ошибку.

Подробнее о опции image здесь .

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