在本官方教程中,通过 Cloud Build 构建了一个 docker 容器,其中只有一个显示当前日期的可执行 bash 脚本。
#!/bin/sh
echo "Hello, world! The time is $(date)."
这里是 Dockerfile:
FROM alpine
COPY quickstart.sh /
CMD ["/quickstart.sh"]
这意味着quickstart.sh永远不会在构建阶段执行,而只会在容器的执行阶段执行。
要查看脚本的输出,您应该运行容器(在您的计算机上本地或通过 Cloud Shell):
$ docker run gcr.io/[PROJECT-ID]/quickstart-image:latest
Hello, world! The time is Sat Jun 13 05:10:41 UTC 2020.
如果你想在容器的构建阶段执行脚本,你应该使用RUN 命令。
例如,让我们在同一目录中创建第二个名为build.sh 的可执行脚本:
#!/bin/sh
echo "Hello, build at $(date)."
然后,将其添加到Dockerfile 文件描述中:
FROM alpine
COPY quickstart.sh /
COPY build.sh /
RUN /build.sh
CMD ["/quickstart.sh"]
现在,我们可以构建一个新版本的容器镜像了:
gcloud builds submit --tag gcr.io/[PROJECT-ID]/quickstart-image
这一次,build.sh 的输出可以在 Cloud Build 控制台的详细输出日志中看到:
当然,这里只是一个简单的例子,给你一个快速的答案。您可以检查所有其他可能的选项以编写正确且干净的Dockerfile。但它与 Cloud Build 并没有真正的联系。