docker - 使用 Google Cloud Build,我如何运行 Makefile 来执行 docker 和 kubectl 命令?

标签 docker makefile google-cloud-build docker-in-docker

我收到了一个项目,该项目使用多个 Makefile 构建,这些文件运行多个 docker 命令。我想在 Cloud Build 上构建它。

我知道 Cloud Build native 处理 Docker,但必须使用现有的 Makefile 结构。

我尝试了 make Custom Build step ,但 Cloud Build 因缺少 dockerkubectl 而失败。所以我可以将它们添加到 make 自定义构建步骤的 Dockerfile 中,但这似乎是错误的,因为那时 make 运行 Docker-在 Docker 中,这会导致问题——例如,gcloudkubectl 权限和上下文丢失。

作为此类 Makefile 的一小部分,这里有一个调用 docker builddocker 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/

相关文章:

docker - 如何为安装了Bazel,Kubectl和Gcloud的Cloud Build创建Slim Docker镜像?

c - Makefile 问题 - 阅读器中的 fatal error

web-services - docker:没有链接的网络

docker - 为 VPN 容器连接的 docker 容器打开端口

docker - GitHub Action Ansible 检查 ubuntu :focal hangs on setting up tzdata without dialog

c - main.c :(. text+0x25): 未定义对 `reciprocal' 的引用

c++ - 如何在多个文件中使用变量?

python - 在 Cloud Build 管道中运行 python 测试的最佳做法是什么?

docker - 如何从容器化的 Dockerfile 向 GCP 进行身份验证

docker - 在拉动或应用部署时kubernetes是否支持替代存储库?