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']
我正在尝试将 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']