Grafana in Azure Container App times out

I am trying to host Grafana (as well as a few other logging tools in a sidecar pattern) in an Azure Container App, and I’ve been having an issue where the container appears to start correctly, but when I go to the URL the page just loads forever until it eventually times out.

My setup is fairly basic at the moment, pulling the latest image from docker.io and setting a few environment variables. While I am also using Front Door as a reverse proxy (and have followed the guide on accessing Grafana behind a reverse proxy), neither the Front Door URL, nor the direct container URL work.

There are no obvious errors in the console or system log, there’s a lot of logs to post so if you need any in particular let me know. And Azure is reporting the container revision and provisioned and started.

Is there anything else I can check or change to get this working?

I have been using this GitHub project as a basis and making my own customisations: GitHub - kimcuhoang/practical-net-otelcollector: Practical .NET Observability with OpenTelemetry Collector

The bicep file I am using to deploy (with some slight redactions):

param containerResources object = {
  cpu: '0.25'
  memory: '0.5Gi'
}
resource containerApp 'Microsoft.App/containerApps@2023-05-02-preview' = {
  name: <containerName>
  location: <azureLocation>
  tags: {
    'Resource-Name': <containerAppEnvironmentName>
    'Resource-Description': 'Containerised application hosted in a managed container environment'
    'Platform-Environment': substring(resourceGroup().name, 0, 3)
  }
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    managedEnvironmentId: <containerAppEnvironment>.id
    configuration: {
      activeRevisionsMode: 'Multiple'
      ingress: {
        external: true
        allowInsecure: false
        targetPort: 3000
        transport: 'auto'
        traffic: [
          {
            weight: 100
            latestRevision: true
          }
        ]
      } 
    }
    template: {
      revisionSuffix: <containerRevision>
      containers: [
        {
          name: 'jaeger-tracing'
          image: 'jaegertracing/all-in-one:latest'
          resources: {
            cpu: containerResources.cpu
            memory: containerResources.memory
          }
        },{
          name: 'loki-logs'
          image: 'grafana/loki:latest'
          args: ['-config.file=/etc/loki/local-config.yaml']
          resources: {
            cpu: containerResources.cpu
            memory: containerResources.memory
          }
        },{
          name: 'prometheus-metrics'
          image: 'prom/prometheus:latest'
          args: ['--config.file=/etc/prometheus/prometheus.yaml', '--web.listen-address=:8080']
          resources: {
            cpu: containerResources.cpu
            memory: containerResources.memory
          }
          env: [ 
            {
              name: 'config.file'
              value: '/etc/prometheus/prometheus.yaml'
            }
          ]
        },{
          name: 'collector-aggregator'
          image: 'otel/opentelemetry-collector-contrib:latest'
          args: ['--config=/etc/otel-collector.yaml']
          resources: {
            cpu: containerResources.cpu
            memory: containerResources.memory
          }
        },{
          name: 'grafana-visualisation'
          image: 'docker.io/grafana/grafana:latest'
          resources: {
            cpu: containerResources.cpu
            memory: containerResources.memory
          }
          volumeMounts: [
            {
              volumeName: 'logging-app-storage'
              mountPath: '/etc/grafana/provisioning/datasources'
            }
          ]
          env: [ 
            {
              name: 'GF_SERVER_DOMAIN'
              value: basePath
            },{
              name: 'GF_SERVER_ROOT_URL'
              value: '${basePath}/logging/'
            },{
              name: 'GF_SERVER_SERVE_FROM_SUB_PATH'
              value: 'true'
            }
          ]
        }
      ]      
      volumes: [
        {
          name: 'logging-app-storage'
          storageName: 'logging-app-storage'
          storageType: 'AzureFile'
        }
      ]
    }
  }
}