Azure 容器实例 - CLI 和 YAML 文件给出不同的结果

Azure Container Instances - CLI and YAML file giving different outcomes

我正在尝试将 Mongo 作为容器组的一部分部署到 Azure 容器实例上。为此,我使用带有文件共享的存储帐户来保存 mongo 数据。无法将卷安装在 /data/db 默认位置,因此我将其安装在其他位置并使用 --db-path 标志启动 mongod。使用 CLI,这一切都可以正常工作,下面是完整的命令。

但是,当我想将所有这些命令转换为我的 YAML 配置文件时,它不起作用。 Mongo 因 unknown file or directory 错误而崩溃。如果我在没有 --db-path 标志的情况下启动容器但仍然挂载卷,我可以执行到 运行 容器并看到卷在那里并且已附加。我什至可以通过 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

page in the documentation 的帮助下,我发现这是一个语法问题。在 YAML 配置文件中覆盖入口点的正确方法如下:

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