В чем разница между `docker-compose build` и` docker build`? - PullRequest
0 голосов
/ 08 мая 2018

В чем разница между docker-compose build и docker build?

Предположим, что в докеризованном пути проекта есть файл docker-compose.yml:

docker-compose build

И

docker build

Ответы [ 4 ]

0 голосов
/ 07 июня 2019

Добавление к первому ответу ...

Вы можете дать имя изображения и имя контейнера в соответствии с определением сервиса.

например. для службы под названием «web» в приведенном ниже примере docker-compose вы можете явно указать имя изображения и имя контейнера, чтобы docker не использовал значения по умолчанию.

В противном случае имя образа, которое будет использовать docker, будет объединением папки (Directory) и имени службы. например myprojectdir_web

Так что лучше явно указать желаемое имя образа, которое будет сгенерировано при выполнении команды сборки docker.

например. изображение: mywebserviceImage имя контейнера: my-webServiceImage-Container

пример файла docker-compose.yml:

version: '3.2'
services:
  web:
    build:
      dockerfile: Dockerfile-alpine
      context: ./web
    ports:
      - 8099:80
    image: mywebserviceImage
    container_name: my-webServiceImage-Container
    depends_on:
      - database
0 голосов
/ 08 мая 2018

docker-compose - это оболочка для командной строки докера, чтобы выиграть время и избежать строк длиной в 500 символов (а также запустить несколько контейнеров одновременно). Для получения параметров используется файл docker-compose.yml.

Справочную информацию о формате файла docker-compose можно найти здесь .

Таким образом, в основном docker-compose build будет читать ваш docker-compose.yml, искать все службы, содержащие оператор build:, и запускать docker build для каждого.

Каждый build: может указывать Dockerfile, контекст и аргументы для передачи в Docker.

В заключение привести пример docker-compose.yml file:

version: '3.2'

services:
  database:
    image: mariadb
    restart: always
    volumes:
      - ./.data/sql:/var/lib/mysql

  web:
    build:
      dockerfile: Dockerfile-alpine
      context: ./web
    ports:
      - 8099:80
    depends_on:
      - database 

При вызове docker-compose build, только цель web нуждается в создании изображения. Команда docker build будет выглядеть так:

docker build -t web_myproject -f Dockerfile-alpine ./web
0 голосов
/ 08 ноября 2018

По сути, docker-compose - это лучший способ использования docker, чем просто команда docker.

Если вопрос здесь в том, что если команда docker-compose build создаст zip-файл, содержащий несколько изображений, которые в противном случае были бы скомпилированы отдельно с обычным Dockerfile, то это неверное мышление.

Docker-compose build, создаст отдельные образы, перейдя в отдельную запись сервиса в docker-compose.yml.

С помощью команды docker images мы можем видеть все отдельные изображения, которые также сохраняются.

Настоящая магия состоит в создании докера.

Этот в основном создаст сеть взаимосвязанных контейнеров, которые могут общаться друг с другом с именем контейнера, похожим на имя хоста.

0 голосов
/ 08 мая 2018

docker-compose build создаст службы в файле docker-compose.yml.

https://docs.docker.com/compose/reference/build/

docker build создаст образ, определенный Dockerfile.

https://docs.docker.com/engine/reference/commandline/build/

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