我收到了一个由许多Makefile
构建的项目,这些项目运行许多docker
命令。我想在Cloud Build上构建它。
[我知道Cloud Build可以本地处理Docker,但必须与现有的Makefile结构一起使用。
我尝试了make Custom Build step,但是由于缺少docker
和kubectl
,Cloud Build失败了。因此,我可以将它们添加到make Custom Build步骤的Dockerfile
中,但这似乎是错误的,因为然后make运行Docker-in-Docker会导致问题-例如,gcloud
和kubectl
权限和上下文丢失。
作为此类Makefile的一小部分,这是一个调用docker buildz and
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容器中。