Как перейти на docker Compose file v3 для приложений, работающих исключительно на моей рабочей станции? - PullRequest
0 голосов
/ 22 апреля 2020

Есть много приложений , которые я запускаю на своей рабочей станции, используя docker-compose up.

Причины:

  • Они У меня нет установщика, или я не хочу его использовать
  • Для них требуется специальный механизм хранения
  • Для них требуется шаг процесса сборки
  • Они созданы мной, и я хочу, чтобы они легко запускались на любой рабочей станции
  • et c

Так что я обычно получаю следующую файловую структуру :

myAppDir
  - docker-compose.yml
  - Dockerfile (not always)
  - someConfigFile

И мой docker -compose.yml выглядит примерно так: (Он может содержать 2 или 3 службы, но я предоставляю простейшую форму, которую я использую )

version: '3.7'
services:
  mysql:
    image: mysql:5.7.29
    restart: always
    volumes:
      - ./mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=xyz
    ports:
      - 3306:3306

Затем, когда мне нужно запустить приложение , я просто выполняю:

docker-compose up # (or with --build)

Недавно я попытался добавить:

    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 200M

и получили сообщение:

В некоторых службах (mysql) используется ключ 'deploy', который будет игнорироваться. Compose не поддерживает конфигурацию 'deploy' - используйте docker stack deploy для развертывания в рое.

Поэтому я попытался:

docker stack deploy mystack --compose-file docker-compose.yml

и получено сообщение:

Игнорирование неподдерживаемых параметров: перезапустите

этот узел не является менеджером роя. Используйте «docker swarm init» или «docker swarm join», чтобы соединить этот узел с роем и попробуйте снова

Это кажется более сложным, чем docker-compose up.
Я видел, что я может использовать --compatibility флаг например,

docker-compose --compatibility up

Но слово совместимость означает для меня, что я должен скоро переключиться на новый способ запуска моего apps local.

Мой вопрос: Что такое новая процедура, которой я должен следовать для запуска приложений на моей рабочей станции с использованием docker и файл дескриптора для опций поддержки, присутствующих в файле Compose v3 ?

Ответы [ 2 ]

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

Если вы хотите указать ограничения памяти и аналогичные ограничения для локальных контейнеров, вам нужно использовать файл версии 2 Compose . Это вызывается в документации для секции deploy: resources: . docker / compose # 4513 имеет несколько достаточно четких утверждений о том, что версия 2 файла Compose больше ориентирована на локальные настройки, а версия 3 больше при установке Swarm и что Docker намерена продолжать поддерживать обе версии файла.

Docker поместил множество опций и функций, определяющих c в их Режим установки кластера Swarm , в основной продукт. Например, все, что упоминает «стек», указывается c для настройки Swarm. Одно из следствий объединения вещей Swarm и plain-Docker в том, что опции deploy: Docker Compose действуют только в режиме Swarm. Документация для клавиши deploy: отмечает:

Это действует только при развертывании в рой с docker stack deploy и игнорируется docker-compose up и docker-compose run .

0 голосов
/ 22 апреля 2020

У меня такой вопрос: какова новая процедура, которой я должен следовать для запуска приложений на моей рабочей станции с использованием docker и файла дескриптора, чтобы поддерживать параметры, присутствующие в файле Compose v3?

Docker compose V3 предназначен для использования с Docker Swarm развертываниями, поэтому вам нужно запустить Docker в режиме Swarm, в противном случае просто продолжайте использовать V2 и его более простой интерфейс для разработки на локальном хосте.

Например, restart игнорируется, потому что эта ответственность теперь принадлежит Рому Docker, а не Docker.

Использование флага совместимости позволяет конвертировать во время выполнения ваш файл компоновки V3 в файл компоновки V2.

Короче говоря, просто используйте V3, если вы хотите запустить Docker в режиме Swarm, чтобы Воспользуйтесь всеми его новыми функциями, иначе говоря, это своего рода Kubernetes на Docker земле.

...