问题标签 [google-artifact-registry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
264 浏览

docker - 我无法解决“无法启动并侦听 PORT 环境变量定义的端口”。使用 Docker 映像在 Google Cloud Run 中出错

我知道有很多 关于这个的帖子 ,但我仍然无法解决这个问题。这是一个使用 React 的 .Net Core 3.1 应用程序。

npm run build成功完成。

PORT=8080的 .env 文件中有

我已将我的服务配置为在端口 8080 上运行。 在此处输入图像描述

我将 Dockerfile 设置为公开 8080:

在此处输入图像描述

但我仍然得到以下信息: Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.

我检查了日志,但它只显示相同的消息,并带有指向自身的链接: 在此处输入图像描述

所以日志似乎没用。

我正在部署如下:

  1. docker build -f foobarDataViz.UI\Dockerfile --force-rm -t foobardataviz.ui . --no-cache 这构建成功。
  2. docker run -d -p 8080:80 --name foobar foobardataviz.ui 这运行成功,我可以在端口 8080 上本地浏览
  3. docker push us-central1-docker.pkg.dev/foobar-poc/foobar/foobardataviz.ui:latest
  4. 然后我转到 Cloud Run 并单击“编辑和部署新修订版”,它会进行一些处理,但由于上述错误而失败

因此,该错误表明它没有暴露端口,或者它只是无法完全启动。会不会是我的 docker 镜像与我设置 Cloud Run 的方式不兼容?

提前致谢

0 投票
1 回答
137 浏览

google-container-registry - GCP 工件注册表公共 google 容器图像

由于 Google 正在大力推动 Artifact Registry 并且已经宣布不再积极开发 Container Registry,因此是否可以替代目前在https://console.cloud.google.com/gcr/上提供的公共 Google Container 镜像图片/谷歌容器/全球

0 投票
1 回答
87 浏览

java - 如何在 GCP 工件注册表中“引导”父 POM

我按照说明配置 maven 客户端以使用 Artifact Registry。我能够成功地将我的根 pom 部署到它;但是,当我有一个从该根 pom 继承的单独项目时,它无法构建,因为它不知道在哪里可以找到根 pom。这是有道理的:子项目无法知道父 pom 将在随机的 Artifact Registry 存储库中找到。这样做的标准做法是什么?

我之前所做的是在每个程序员的计算机中,<repository>在他们的计算机中进行配置,settings.xml但这不能很好地扩展 + 它需要人工干预 + 在处理 CI 时非常麻烦,因为现在你需要配置构建机器人的 settings.xml . 考虑到现在有这么多的 CI 系统,我想现在已经有了一个约定。有没有更好的方法来实现这一点?在回购中承诺的某种方式以及开箱即用的一切工作方式?git clone... mvn package... 完成。我专门询问有关 Artifact Registry 的问题,因为它不使用静态用户名/密码,而是使用 maven wagon 进行身份验证

一种可能的解决方案是不将其<repository>放在根 pom 中,而是放在每个项目的 pom 中,但这会导致大量重复,因为 config + wagon 非常冗长

0 投票
1 回答
109 浏览

python - 从云函数内部构建容器映像

背景:我在 Google Vertex AI 中为每个 bigquery 数据集训练一个非常相似的模型,但我想为每个现有数据集(在 Google BigQuery 中)拥有一个自定义训练图像。从这个意义上说,我需要按需在容器注册表中以编程方式构建自定义 Docker 映像。我的想法是让一个谷歌云函数来做这件事,由 PubSub 主题触发,其中包含关于我想为哪个数据集构建训练容器的信息。所以很自然,该函数会将 Dockerfile 和相关脚本写入 Cloud Functions 中的 /tmp 文件夹(据我所知,这是唯一可写的地方)。但是,当我尝试在此脚本中实际构建容器时,显然,它找不到 /tmp 文件夹或其内容,即使它们在那里(通过日志记录操作检查)。

到目前为止令人不安的代码:

当我检查云构建日志时,我得到: 步骤 #0:无法准备上下文:无法评估 Dockerfile 路径中的符号链接:lstat /tmp/Dockerfile:没有这样的文件或目录

0 投票
1 回答
99 浏览

google-cloud-run - 通过 YAML 部署的 Cloud Run 显示找不到图像

我有两个用于暂存和生产的 Cloud Run Knative YAML 文件。我有两个用于暂存和生产的 GCP 项目以及两组工件注册表。

我使用简单的 zip 并像这样构建:

然后我编辑最后yaml调整标签,然后重新部署:

前几天这一切都在工作,我的登台和生产站点已经启动。刚才它也适用于我的生产项目。

我刚刚切换了项目使用gcloud config set core/project proj-b,然后再次运行这两个命令,进行了必要的调整。

第一个命令成功;图像已构建,我可以在 Artifact Registry 中看到它。

但是第二个命令失败了:

将新配置应用于项目 [01234567890] 区域 [us-east1] 中的 Cloud Run 服务 [cloud-run-z]

X 正在部署... 未找到映像“us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0”。

X 创建修订版... 未找到映像“us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0”。

. 路由流量...

部署失败

错误:(gcloud.run.services.replace)找不到图像“us-east1-docker.pkg.dev/proj-a/repo-x/image-y:1.0”。

我可以看到图像,我已经将它在控制台中写入的 URL 粘贴到了我yaml的位置,这在前几天可以正常工作。

为什么 Cloud Run 看不到我可以看到的图像?

0 投票
1 回答
94 浏览

docker - 通过从 Artifact Registry 中提取图像来运行 cronjob 时出现 GKE 问题

我在 GKE 中创建了一个具有以下规范的 cronjob:

我使用以下命令创建 cronjob:

当我稍后观察它是否正在运行时(为了测试,我安排它每 5 分钟运行一次),这是我看到的:

它似乎无法从 Artifact Registry 中提取图像。我在同一个项目下创建了 GKE 和 Artifact Registry。

可能是什么原因?在文档上花了几个小时后,我仍然无法取得进展,而且我在 GKE 的世界里还是个新手。

如果您碰巧建议我检查任何内容,如果您还描述了我应该在 GCP 中的哪个位置检查/控制您的建议,我将不胜感激。


附录:

当我运行以下命令时:

输出非常大,但我想以下消息应该表明问题所在。

如何逐步解决这个问题?

0 投票
0 回答
16 浏览

ubuntu - 尝试从 org 防火墙后面访问 google artifact 注册表时出现代理错误

这是关于安装在 WSL2 中的 Ubuntu 20.04.3。

当我在公司 vpn 上并尝试下载存储在 google artifact registry 中的自定义构建 python 包时(您需要在 vpn 上访问这个 google artifact registry 实例),我仍然面临代理错误,尽管有在 Ubuntu 中设置的代理。我附上了错误的截图。

有谁知道这可能是什么?本质上,一旦我在 vpn 上,我似乎无法从 Ubuntu 访问互联网。

点击我:代理错误屏幕截图

0 投票
0 回答
64 浏览

npm - 使用 GCP Artifact Registry 存储 NPM 依赖项

希望使用 GCP Artifact Registry 作为 NPM 包的真实来源,以确保开发人员引入他们已经通过许可、漏洞甚至可能用补丁版本覆盖它们的包

谷歌给出了一些场景和用例;但没有关于他们如何建议这样做的真实例子

将依赖项存储在私有注册表中

Artifact Registry 提供了从公共存储库安装的便利以及对依赖项的控制。

https://cloud.google.com/artifact-registry/docs/dependencies#approaches

手动或使用直通代理将您需要的第三方依赖项显式镜像到您的私有存储库中

https://cloud.google.com/artifact-registry/docs/dependencies#public-dependencies

该指南显示了如何上传您的包,但并没有真正提供批量导入一堆不属于您的依赖项的好方法;看看是否可以使用直通代理会更酷。

0 投票
1 回答
131 浏览

google-cloud-platform - 使用 Artifact Registry 部署 Google Cloud Function 是否比使用 Container Registry 更快?

我最近从 GCP 收到的一封电子邮件提到了向 Artifact Registry for Cloud Functions 的过渡。

它声称:

Cloud Functions for Firebase 和 Firebase Extensions 历来使用 Container Registry 来打包函数并管理其部署,但随着对 Artifact Registry 的更改,您将获得以下好处:

您的功能将部署得更快。

您将可以访问更多区域。

我无法从官方文档或用户体验中找到有关更快部署的更多信息。

有没有理由相信云功能部署实际上会更快,并且有明显的优势?目前功能部署是缓慢的,因此即使是百分比的小幅加速也会减少部署时间。

0 投票
1 回答
46 浏览

docker - Google Cloud Aritfact Registry 无法使用最新标签提取图像

我们在另一个服务项目中创建了一个新的 repo。北美-northwest1-docker.pkg.dev/service-project/app-name-image:111111

我们拥有的标签 id 是由 gitlab-ci 生成的。

我们成功构建和推送,我们能够 docker pull 特定标签,但是当使用 :latest 时,它不能说“无法获取”最新的“。

我们的旧回购之一可以拉“最新”,但这个新回购不能。我尝试使用相同的图像名称约定,但仍然无法正常工作。

有人有想法吗?