Azure Экземпляры-контейнеры - CLI и YAML-файл дают разные результаты - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь развернуть Mon go на Azure Экземпляры контейнера как часть группы контейнеров. Для этого я использую учетную запись хранения с общей папкой для сохранения данных mon go. Невозможно смонтировать том в папке /data/db по умолчанию, поэтому я монтирую его в другом месте и запускаю mongod, используя флаг --db-path. Все это прекрасно работает с помощью CLI, полная команда приведена ниже.

Однако, когда я хочу перевести все эти команды в мой файл конфигурации YAML, это не работает. Mon go вылетает с ошибкой unknown file or directory. Если я запускаю контейнер без флага --db-path, но все еще монтирую том, я могу запустить c в работающий контейнер и увидеть, что том есть и подключен. Я даже могу вручную создавать папки в общем ресурсе через портал Azure и видеть, что они появляются в контейнере.

Документация и примеры немного тонкие на местах, особенно примеры на основе YAML. Самым большим отличием от группы контейнеров является необходимость определения именованного тома отдельно от контейнера, который используется свойством volumeMounts. Это просто синтаксическая ошибка? Являются ли команда CLI и YAML каким-либо образом не эквивалентными?

Команда CLI

az container create
--resource-group rsenu-hassPilots-group
--name mongo
--image mongo
--azure-file-volume-account-name <account>
--azure-file-volume-account-key "<key>" --azure-file-volume-share-name mongodata
--azure-file-volume-mount-path "/data/mongoaz"
--ports 27017
--cpu 1
--ip-address public
--memory 1.5
--os-type Linux
--protocol TCP
--command-line "mongod --dbpath=/data/mongoaz"

Конфигурация YAML

apiVersion: 2018-10-01
location: uksouth
name: trustNewArtGroup
properties:
  containers:
  - name: mongo
    properties:
      image: mongo:4.2.3
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
      ports:
      - port: 27017
      volumeMounts:
      - name: database
        mountPath: /data/azstorage
      environmentVariables:
      - name: 'MONGO_INITDB_DATABASE'
        value: 'trust-new-art-db'
      command:
      - "mongod --dbpath=/data/azstorage"
  osType: Linux
  ipAddress:
    type: Public
    dnsNameLabel: trustnewart
    ports:
    - protocol: tcp
      port: '27017'
  volumes:
    - name: database
      azureFile:
        sharename: mongodata
        storageAccountName: <account>
        storageAccountKey: <key>
tags: null
type: Microsoft.ContainerInstance/containerGroups

1 Ответ

2 голосов
/ 09 февраля 2020

С небольшой помощью этой страницы в документации я обнаружил, что это проблема синтаксиса. Правильный способ переопределить точку входа в файле конфигурации YAML заключается в следующем:

command: ['mongod', '--dbpath', '/data/azstorage']
...