我收到了一个项目,该项目使用多个 Makefile
构建,这些文件运行多个 docker
命令。我想在 Cloud Build 上构建它。
我知道 Cloud Build native 处理 Docker,但必须使用现有的 Makefile 结构。
我尝试了 make Custom Build step ,但 Cloud Build 因缺少 docker
和 kubectl
而失败。所以我可以将它们添加到 make 自定义构建步骤的 Dockerfile
中,但这似乎是错误的,因为那时 make 运行 Docker-在 Docker 中,这会导致问题——例如,gcloud
和 kubectl
权限和上下文丢失。
作为此类 Makefile 的一小部分,这里有一个调用 docker build
和 docker push
的目标。
build/myapp/deployer: ...
docker build \
--build-arg REGISTRY="$(REGISTRY)/myapp" \
--tag "$(APP_DEPLOYER_IMAGE)" \
-f deployer/Dockerfile \
.
docker push "$(APP_DEPLOYER_IMAGE)"
@touch "$@"
如何在 Cloud Build 中运行这些 Makefile?
最佳答案
要回答您的评论:“如何在 docker 容器内运行 docker?”,您必须像运行者一样看待您的自定义云构建器。您可以在 Cloud Build 中像这样使用它
- steps:
- name: gcr.io/your-project/your-custom-builder
entrypoint: "bash"
args:
- "-c"
- |
Makefile
<All the script lines that you want which use binaries installed in your custom builder>
此处自定义 Cloud Builder 运行命令,但结果存储在您的 Cloud Build 工作区中,而不是自定义 Cloud Builder 容器中。
关于docker - 使用 Google Cloud Build,我如何运行 Makefile 来执行 docker 和 kubectl 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59067799/