GCP VM实例运行docker映像,并带有;“过时”;构建参数 上下文
我正试图在GitHub操作中构建一个CD管道,创建一个docker映像,将其推送到Google Cloud Registry(GCR),然后用最新映像重新启动一个VM实例 问题 虚拟机实例没有运行最新的docker映像,即使虚拟机实例页面本身显示了正确的映像标记,我看到虚拟机实例正在重新启动 我怀疑这是因为当我SSH到VM实例中并运行GCP VM实例运行docker映像,并带有;“过时”;构建参数 上下文,docker,google-cloud-platform,github-actions,google-cloud-registry,Docker,Google Cloud Platform,Github Actions,Google Cloud Registry,我正试图在GitHub操作中构建一个CD管道,创建一个docker映像,将其推送到Google Cloud Registry(GCR),然后用最新映像重新启动一个VM实例 问题 虚拟机实例没有运行最新的docker映像,即使虚拟机实例页面本身显示了正确的映像标记,我看到虚拟机实例正在重新启动 我怀疑这是因为当我SSH到VM实例中并运行docker logs时,我看到的日志表明正在使用docker构建参数的旧值,特别是数据库URL。(我还确认,在请求端点后,适当的日志会显示在这里,因此看起来我正在
docker logs
时,我看到的日志表明正在使用docker构建参数的旧值,特别是数据库URL
。(我还确认,在请求端点后,适当的日志会显示在这里,因此看起来我正在查看正确的日志)
当我下拉同一个图像并在本地运行它时,DATABASE\u URL
是正确的
当我SSH到VM实例并运行docker-images
时,我没有看到新的映像被列出。我一定是弄坏了什么东西,因为这在早些时候起作用,但我在这里发现问题时遇到了麻烦
问题:
为什么VM实例不接收新的docker映像?(当运行docker images
时,我看不到新的docker图像被列出)
更新
通过以下方式检查VM实例的日志后:
sudo journalctl -u konlet-startup
我看到以下错误:
Error: Failed to start container: Error response from daemon: {"message":"pull access denied for gcr.io/..., repository does not exist or may require 'docker login': denied: Permission denied for \"...\" from request \"...". "}
这就解释了为什么我不再收到新的docker图像
代码片段
为了确保secrets.DATABASE\u URL
实际上是正确的,我启动了一个服务器并在Dockerfile中发送了一个请求:
RUN curl "http://my-url.ngrok.io/${DATABASE_URL}"
我可以确认它确实是正确的。计算引擎的服务帐户的作用域和授权是什么?啊,这可能就是问题所在。也许我甚至在不了解其用途的情况下删除了VM实例的服务帐户。然而,我最终走了一个不同的方向(从VM实例到AppEngine Flex),所以我们可以考虑关闭这个问题。但是,如果有人有类似的问题,我会继续关注,这可以帮助他们调试问题。计算引擎的服务帐户的作用域和授权是什么?啊,这可能就是问题所在。也许我甚至在不了解其用途的情况下删除了VM实例的服务帐户。然而,我最终走了一个不同的方向(从VM实例到AppEngine Flex),所以我们可以考虑关闭这个问题。然而,我会继续保持它,以防有人有类似的问题,这可以帮助他们调试问题。
RUN curl "http://my-url.ngrok.io/${DATABASE_URL}"