首页 > 解决方案 > 如何将命令行参数传递给 Service Fabric 中的 docker Grafana 容器

问题描述

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

运行 grafana 的实际 docker 命令如下所示 在此处输入图像描述

特别是我需要通过

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

-e "GF_SECURITY_ADMIN_PASSWORD=secret"

在 ServiceFabric 清单中传递命令行参数的推荐方法是什么?还有没有办法逃避需要传入的双引号?

标签: azure-service-fabricgrafana

解决方案


docker CLI的-e参数是要在容器中设置的环境变量。您可以在清单中指定它们。

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

推荐阅读