我可以 运行 一个 Docker 容器用于另一个 Google Cloud Build 步骤吗?
Can I run a Docker container to use in another Google Cloud Build step?
我想 运行 Docker 容器中的新 MySQL 实例作为云构建,然后在后面的步骤中访问该 MySQL 数据库到 运行 单元测试。这可能吗? It appears as if I can run a Docker Container in a build step, but the step doesn't complete until the Container exists。我希望此 MySQL 容器保持 运行ning 直到最终构建步骤完成。
FWIW 我想在 Rails 项目的 Ruby 上使用它进行 运行 rspec 测试。我目前使用 CloudSQL 实例进行 运行 测试,但速度很慢,即使在本地快速进行相同的测试 运行 也是如此。将 Cloud Builder 的机器类型更改为强大的机器类型没有帮助,所以我认为延迟是我最大的杀手,这就是为什么我想尝试使用对等容器 MySQL 实例。
据我所知,你不能这样做。每个步骤都是独立的,您不能 运行 后台步骤。
我的解决方案是将 MySQL 与单元测试放在同一步骤中,并将 运行 MySQL 作为后台进程放在同一步骤中。很无聊(因为你必须安装 运行 MySQL 在你的步骤中)但我没有更好的解决方案。
事实证明至少有两种方法可以给这只猫剥皮:
- 使用
docker-compose
cloud builder 一步启动多个容器:MySQL 和一个测试 运行ner。这里的缺点是该步骤永远不会完成,除非 MySQL 将 运行 在后台并且永远不会退出。我想可以写一个包装器让它在几分钟后死掉。
- 您实际上可以在早期构建步骤中使用
-d
启动容器并确保它在 cloudbuild
docker 网络上,然后后续步骤可以连接到它,如果它们'也在 cloudbuild
网络上。本质上 Mysql 步骤将快速“完成”,因为它只是以守护进程模式启动服务器,然后继续下一个构建步骤。稍后,测试 运行ner 将 运行 针对新数据库进行测试,并在实际完成测试时完成其构建步骤。
我选择了选项 2,我的 16 分钟单元测试(运行 针对同一区域的 CloudSQL)使用 dockerized 运行k 缩短到 1.5 分钟 MySQL服务器。
我想 运行 Docker 容器中的新 MySQL 实例作为云构建,然后在后面的步骤中访问该 MySQL 数据库到 运行 单元测试。这可能吗? It appears as if I can run a Docker Container in a build step, but the step doesn't complete until the Container exists。我希望此 MySQL 容器保持 运行ning 直到最终构建步骤完成。
FWIW 我想在 Rails 项目的 Ruby 上使用它进行 运行 rspec 测试。我目前使用 CloudSQL 实例进行 运行 测试,但速度很慢,即使在本地快速进行相同的测试 运行 也是如此。将 Cloud Builder 的机器类型更改为强大的机器类型没有帮助,所以我认为延迟是我最大的杀手,这就是为什么我想尝试使用对等容器 MySQL 实例。
据我所知,你不能这样做。每个步骤都是独立的,您不能 运行 后台步骤。
我的解决方案是将 MySQL 与单元测试放在同一步骤中,并将 运行 MySQL 作为后台进程放在同一步骤中。很无聊(因为你必须安装 运行 MySQL 在你的步骤中)但我没有更好的解决方案。
事实证明至少有两种方法可以给这只猫剥皮:
- 使用
docker-compose
cloud builder 一步启动多个容器:MySQL 和一个测试 运行ner。这里的缺点是该步骤永远不会完成,除非 MySQL 将 运行 在后台并且永远不会退出。我想可以写一个包装器让它在几分钟后死掉。 - 您实际上可以在早期构建步骤中使用
-d
启动容器并确保它在cloudbuild
docker 网络上,然后后续步骤可以连接到它,如果它们'也在cloudbuild
网络上。本质上 Mysql 步骤将快速“完成”,因为它只是以守护进程模式启动服务器,然后继续下一个构建步骤。稍后,测试 运行ner 将 运行 针对新数据库进行测试,并在实际完成测试时完成其构建步骤。
我选择了选项 2,我的 16 分钟单元测试(运行 针对同一区域的 CloudSQL)使用 dockerized 运行k 缩短到 1.5 分钟 MySQL服务器。