元数据提取失败的堆栈驱动程序记录Google Compute Engine

时间:2017-09-29 15:54:07

标签: docker-compose metadata gcp

我正在通过cloud.google.com/go/logging将我的go应用程序与Stackdriver日志集成在一起。部署在Flex引擎上的GCP中时,我的应用程序运行得非常好。但是,当我在本地运行我的应用程序时,只要我点击localhost:8080,我的控制台就会出现以下错误,应用程序会自动被杀死:

Metadata fetch failed: Get http://metadata/computeMetadata/v1/instance/attributes/gae_project: dial tcp: lookup metadata on 127.0.0.
11:53: server misbehaving

我的理解是,在本地运行时,代码不应该尝试访问Google的内部元数据,这就是上面发生的事情。我挖得更深,看起来这部分是在代码cloud.google.com/go/compute/metadata/metadata.go中处理的。我可能在这里错了,但看起来我必须设置一个env变量才能使代码正常工作。粘贴metadata.go

中的文档
// metadataHostEnv is the environment variable specifying the
    // GCE metadata hostname.  If empty, the default value of
    // metadataIP ("169.254.169.254") is used instead.
    // This is variable name is not defined by any spec, as far as
    // I know; it was made up for the Go package.
    metadataHostEnv = "GCE_METADATA_HOST"

如果我的所有理解都是真的,我应该将GCE_METADATA_HOST设置为什么?如果我对自己的理解不对,为什么我会看到这个错误?这个错误是否可能与我的Docker有关,而不是与Stackdriver日志记录有关?

我在带有docker-compose的容器中运行我的应用程序。我正在执行生成二进制文件的go install,然后我只是执行二进制文件。

编辑:这是我的撰写文件

version: '3'
services:
  dev:
    image: <gcr_image>
    entrypoint:
    - /bin/sh
    - -c
    - "cat ./config-scripts/config.sh >> /root/.bashrc; bash"
    command: bash
    stdin_open: true
    tty: true
    working_dir: /code
    environment:
    - ENV1=value1
    - ENV2=value2
    ports:
    - "8080:8080"
    volumes:
    - .:/code
    - ~/.npmrc:/root/.npmrc
    - ~/.config/gcloud:/root/.config/gcloud
    - /var/run/docker.sock:/var/run/docker.sock

0 个答案:

没有答案