如何将命令行参数传递给 Service Fabric 中的 docker Grafana 容器

How to pass command line arguments to docker Grafana container in Service Fabric

我正在尝试 运行 grafana 作为我的服务结构集群中的容器。如果我在没有命令行参数的情况下进行部署,容器是健康的,但是当我尝试如下所示在服务清单中传递命令行参数时,它会失败。

<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="Grafana.Pkg"
                 Version="1.0.0"
                 xmlns="http://schemas.microsoft.com/2011/01/fabric"
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ServiceTypes>
        <StatelessServiceType ServiceTypeName="Grafana.Type" UseImplicitHost="true" />
    </ServiceTypes>

    <!-- Code package is your service executable. -->
    <CodePackage Name="Code" Version="1.0.0">
        <EntryPoint>
            <ContainerHost>
                <ImageName>myregistry.azurecr.io/grafana:6.3.2</ImageName>
        <Commands>-e "GF_SERVER_ROOT_URL=https://serverurl.com/grafana"</Commands>
            </ContainerHost>
        </EntryPoint>
    </CodePackage>

    <ConfigPackage Name="Config" Version="1.0.0" />

    <Resources>
        <Endpoints>
            <Endpoint Name="Grafana.TypeEndpoint" UriScheme="http" Protocol="http" Port="3000" />
        </Endpoints>
    </Resources>
</ServiceManifest>

运行ning grafana的实际docker命令如下所示

特别是我需要通过

-e "GF_SERVER_ROOT_URL=http://grafana.server.name"

-e "GF_SECURITY_ADMIN_PASSWORD=secret"

在 ServiceFabric 清单中传递命令行参数的推荐方法是什么?另外有没有办法把需要传入的双引号转义?

-e 参数用于 docker CLI, are environment variables to be set in the container. You can specify them in the manifest

<CodePackage Name="Code" Version="1.0.0">
  ...
  <EnvironmentVariables>
    <EnvironmentVariable Name="GF_SERVER_ROOT_URL" Value="https://serverurl.com/grafana"/>    
  </EnvironmentVariables>
</CodePackage>