【发布时间】:2020-03-22 20:49:43
【问题描述】:
我收到了一个由多个Makefiles 构建的项目,这些@s 运行许多docker 命令。我想在 Cloud Build 上构建它。
我知道 Cloud Build 原生处理 Docker,但必须使用现有的 Makefile 结构。
我尝试了make Custom Build step,但由于缺少docker 和kubectl,Cloud Build 失败了。所以我可以将这些添加到 make 自定义构建步骤的Dockerfile 中,但这似乎是错误的,因为 make 运行 Docker-in-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?
【问题讨论】:
-
你能提供这个makefile的代码示例吗?
-
我添加了一个小样本。
-
好的,你的makefile只是一个bash脚本,不是吗?
-
对,make 只是运行一些命令,主要是 docker build 和 docker push。但是,make的依赖结构复杂,所以我宁愿保留它
-
您确实实现了一个自定义构建器,其中包含 Docker Gcloud 和 kubectl?
标签: docker makefile google-cloud-build docker-in-docker