如何使用cloudbuild.yaml在GCP上配置redis?

2023-12-06

我正在尝试在 GCP 上设置 CI/CD 管道。我有一个使用 Redis 作为数据库的 NodeJS 应用程序。我正在尝试在 GCP 上配置 redis。

我已经尝试了下面的配置,但是一旦执行了redis步骤,它就会一直等待redis连接并且不会进行下一步,并且在一段时间后,构建超时。

Cloudbuild.yaml 文件:

steps: - name: 'gcr.io/cloud-builders/npm' args: ['install'] - name: 'redis' env: ['REDISHOST=127.0.0.1', 'REDISPORT=6379'] - name: 'gcr.io/cloud-builders/npm' args: ['test'] - name: "gcr.io/cloud-builders/gcloud" args: ["app deploy"]

错误日志:

ERROR: context deadline exceeded TIMEOUT Finished Step #1 Step #1: 1:M 06 Sep 2019 18:43:09.317 # Redis is now ready to exit, bye bye... Step #1: 1:M 06 Sep 2019 18:43:09.317 * DB saved on disk Step #1: 1:M 06 Sep 2019 18:43:09.312 * Saving the final RDB snapshot before exiting. Step #1: 1:M 06 Sep 2019 18:43:09.312 # User requested shutdown... Step #1: 1:signal-handler (1567795389) Received SIGTERM scheduling shutdown... Step #1: 1:M 06 Sep 2019 18:33:38.595 * Ready to accept connections Step #1: 1:M 06 Sep 2019 18:33:38.595 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. Step #1: 1:M 06 Sep 2019 18:33:38.595 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. Step #1: 1:M 06 Sep 2019 18:33:38.595 # Server initialized Step #1: 1:M 06 Sep 2019 18:33:38.595 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. Step #1: 1:M 06 Sep 2019 18:33:38.594 * Running mode=standalone, port=6379. Step #1: 1:C 06 Sep 2019 18:33:38.592 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf Step #1: 1:C 06 Sep 2019 18:33:38.592 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=1, just started Step #1: 1:C 06 Sep 2019 18:33:38.592 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo Step #1: docker.io/library/redis:latest Step #1: Status: Downloaded newer image for redis:latest Step #1: Digest: sha256:0e67625224c1da47cb3270e7a861a83e332f708d3d89dde0cbed432c94824d9a Step #1: 93e8c2071125: Pull complete Step #1: 8e4f9890211f: Pull complete Step #1: 8a9a85c968a2: Pull complete Step #1: c1b01f4f76d9: Pull complete


在 Google Cloud Build 中,每个步骤都在一个单独的 Docker 容器中依次执行。在您的情况下,第二步启动等待连接的 redis 容器。构建“卡住”并超时。

在这种情况下,您可以使用 Docker compose 在后台运行 Redis 容器。你的cloudbuild.yaml文件可能看起来像这样:

steps:
- name: 'gcr.io/cloud-builders/npm'
  args: ['install']
- name: 'docker/compose:1.24.1' # you can use the version of your choice
  args: ['up', '-d']
- name: 'gcr.io/cloud-builders/npm'
  args: ['test']
  env:
  - 'HOST=redis' # name of the running container
  - 'PORT=6379'
- name: "gcr.io/cloud-builders/gcloud"
  args: ['app', 'deploy'] # NOTE THAT YOU HAVE TO PROVIDE THIS AS 2 PARAMETERS

Your docker-compose.yml文件可能看起来像这样:

version: '3'
services:
  redis:
    image: redis
    network_mode: cloudbuild
    container_name: redis
    expose:
      - 6379

请注意network_mode: cloudbuild配置。据记录here:“每个构建步骤都将其容器附加到名为 cloudbuild 的本地 Docker 网络来运行”。我们指示 Docker Compose 在该网络中运行 redis 容器,以便它们可以进行通信。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用cloudbuild.yaml在GCP上配置redis? 的相关文章

随机推荐

  • 组装 8086 - DOSBOX - 如何发出蜂鸣声?

    我正在组装一个 simon 游戏 我需要在按钮打开时发出蜂鸣声 蜂鸣声也应该彼此不同 谢谢 您可以使用speaker保持您的设计简单 扬声器可以让您播放不同频率的方波 它实际上可以用来再现数字音频但这涉及更多 扬声器只是一个电磁体 当电流流
  • 了解仅前向结果集

    我在 mysql 数据库中有一个表 其中一些行可用 我想从 jdbc 程序中的表中检索数据 其中ResultSet仅向前 我的代码是 import java sql public class Test1 static try Class f
  • 使用 r 中的核密度估计生成样本

    我需要使用 R 中的核密度估计从现有数据生成样本 在我的数据中缺少负值 并且不可能 但在生成样本中存在负值 library ks set seed 1 par mfrow c 2 1 x lt rlnorm 100 hist x col r
  • 为 ASP.NET 页面/用户控件指定自定义资源文件

    如果我有一个名为 Default aspx 的页面 ASP NET 会自动使用 App LocalResources 中名为 Default aspx resx 的资源文件来本地化该页面中的服务器控件 但由于某种原因 我需要选择另一个文件
  • Spring Boot 中的自定义验证消息国际化?

    我正在尝试对我的验证注释应用正确的方法 如下所示 public class UserRequest Size min 3 max 50 NotBlank message name cannot be empty and min 3 max
  • 使用 java jdbc 和准备好的语句创建数据库查询返回语法错误[重复]

    这个问题在这里已经有答案了 我试图让 Java 使用 JDBC 创建数据库 但出现语法错误 尽管查询是正确的 例如 如果我将数据库的名称显式写入代码中 它就可以正常工作 这是我的代码 package mysql manipulator im
  • 如何在 Swift 中从两个结构数组中删除公共项

    在我的应用程序中 我有两个结构数组 我想从其中之一删除常见项目 我的结构 struct PeopleSelectItem var name var id var added false 我的数组 var people PeopleSelec
  • 为什么没有从 std::string_view 到 std::string 的隐式转换?

    有一个隐式转换std string to std string view并且它并不被认为是不安全的 尽管如果程序员这样做肯定可能会导致大量悬空引用不小心 另一方面 没有隐式转换std string view to std string使用相
  • 如何在 TableViewController 上方添加 UIView

    我想在我的表格视图上方显示一个 UIView 出于测试目的 我使用了搜索栏 以消除代码中任何可能的问题 我的设置 标签栏控制器我的自定义表视图控制器看法TableView 用于自定义单元格高度 搜索栏 我将搜索栏放置在 窗口 的顶部 并下拉
  • 多态性和数据隐藏:基类是否会覆盖或忽略派生类的访问限制?

    请看下面的代码清单 include
  • jsTree - 使用 AJAX/C#Web 方法动态填充树

    我有一个 div 我想用 jsTree 填充它 我得到了树应该显示的 正在加载 图标 但是 即使没有抛出错误 似乎也会出现 JavaScript 错误 我从 AJAX 请求加载文件夹结构 如下所示 Documents aspx GetFol
  • React Native 和全局可访问的对象

    我在 React Native 上度过了一段非常糟糕的时光 并且能够从更深层次的函数中访问函数 变量和对象 老实说我以为Redux这将是我的可取之处 但我也遇到了完全相同的障碍 一个例子 export class Home extends
  • 如何在专注于电视 LazyRow 的同时始终专注于第一项?

    我正在尝试实现一个 TVLazyRow 当我们关注该行上方其他可组合项的行时 它必须始终首先关注第一个项目 目前 按下时 焦点将转到行中位于上面可组合项正下方的项目 我怎样才能实现这种行为 这是我的代码以获取更多上下文 val tvList
  • UWP - 旋转图像,同时保持其与网格对齐,仅使用 XAML

    Using Windows 模板工作室 我创建了一个 主要是自动生成的 示例 UWP 应用程序 它在 GridView 中显示一堆图像 为了旋转它们 我使用了以下 xaml 注意RenderTransform我添加的块以及该范围内的注释
  • 如何使用 urllib2 从 Python 中打开的 url 中提取特定数据?

    我是 Python 新手 正在尝试制作一个非常基本的网络爬虫 例如 我制作了一个简单的函数来加载显示在线游戏高分的页面 所以我能够获取 html 页面的源代码 但我需要从该页面中提取特定的数字 例如 网页如下所示 http hiscore
  • while (cin >> x) 和文件结束问题

    我对发生的事情有点困惑 我正在玩 Accelerated C 中的一些程序 并且在其中一个早期程序中遇到了问题 第 35 页 如果您附近碰巧有一个副本 它使用这个片段 while cin gt gt x count sum x count
  • 上传时 EPIPE(管道破裂)?

    我的代码有问题 但我不知道 E 日志报告在哪里 04 08 05 47 46 745 E Upload Server 20080 Starting storage sdcard1 Music Piano my favourites 11 T
  • 具有索引访问的哈希集

    我需要一个数据结构 允许我向其中添加 项目 不允许重复 通过索引访问集合 我正在考虑哈希集 但是HashSet没有索引 满足上述需求的数据结构是什么 源自的集合怎么样KeyedCollection 这表示项目的集合 其中每个键都源自项目本身
  • Flutter文本省略号删除最后一个单词

    我想使用 TextOverflow ellipsis 但它最后删除 for 使其成为省略号 并且看起来非常难看 我怎样才能做到不删除任何单词 例如 当我使用 fade 和 softwrap false 进行制作时 它可以按我想要的方式工作
  • 如何使用cloudbuild.yaml在GCP上配置redis?

    我正在尝试在 GCP 上设置 CI CD 管道 我有一个使用 Redis 作为数据库的 NodeJS 应用程序 我正在尝试在 GCP 上配置 redis 我已经尝试了下面的配置 但是一旦执行了redis步骤 它就会一直等待redis连接并且