【问题标题】:cloud run build and building docker images while building a docker image在构建 docker 镜像的同时运行构建和构建 docker 镜像
【发布时间】:2020-10-06 14:29:41
【问题描述】:

目前,我发现在构建 docker 镜像期间发生了谷歌云构建(不像我想象的那样,它会构建我的镜像,然后执行我的镜像来完成所有构建)。那是在这篇文章中

quick start in google cloud build

soooo,我现在有一个非常简单的 Dockerfile,就像这样

FROM gcr.io/google.com/cloudsdktool/cloud-sdk:alpine

RUN mkdir -p ./monobuild
COPY . ./monobuild/
WORKDIR "/monobuild"
RUN ["/bin/bash", "./downloadAndExtract.sh"]

我有一个单独的 downloadAndExtract,它可以从上次构建的 monobuild 运行中下载任何工件(zip 文件)(仅构建修改后的服务器,或者构建依赖于上次 CI 构建中更改的服务器,就像下游库可能会更改一样) )。第一行仅列出了我在文件中需要的 zip 文件的 url...

curl "https://circleci.com/api/v1.1/project/butbucket/Twilio/orderly/latest/artifacts?circle-token=$token" | grep -o 'https://[^"]*zip' > artifacts.txt

while read url; do
    echo "Downloading url=$url"
    zipFile=${url/*\//}
    projectName=${zipFile/.zip/}
    echo "Zip filename=$zipFile"
    echo "projectName=$projectName"

    wget "$url?circle-token=$token"

    mv "$zipFile?circle-token=$token" $zipFile

    unzip $zipFile
    rm $zipFile
    cd $projectName

    ./deployGcloud.sh

    cd ..

done <artifacts.txt

echo "DONE"

当然,deployGcloud 脚本中包含这些命令,这意味着我们正在构建 docker 镜像,同时构建 google cloud build docker 镜像(这对我来说仍然很有趣)......

码头工人建造。 --tag gcr.io/twix/authservice docker push gcr.io/twix/authservice

gcloud run deploy staging-admin --region us-west1 --image gcr.io/twix/authservice --platform managed

这两个 docker 命令似乎都出错了..

 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

虽然 gcloud 命令似乎很乐意进行部署,但只是使用我们在该位置部署的先前映像。

那么,如何解决这个错误,以便我的构建能够正常工作并构建 N 个映像并将它们全部部署到云端运行?

【问题讨论】:

    标签: google-cloud-platform google-cloud-build


    【解决方案1】:

    哦,我终于想通了。谷歌在它的 config.yaml 文件中有一个奇怪的东西,它使用这个 docker 镜像来运行 curl 命令,然后在下一步使用这个 OTHER dockerr 镜像来运行其他一些命令,依此类推,使用 5 个不同的镜像。这一切都非常令人困惑,所以相反,我意识到我必须弄清楚如何创建我的 ONE docker 映像并将其作为命令运行,因此我将上面的内容修改为具有 ENTRYPOINT,然后 docker build 和 docker 将我的映像推送到谷歌.然后,我有一个 cloudbuild.yaml,其中包含要运行的单步映像命令。

    通过这种方式,我们可以在刚刚运行的 docker 镜像中轻松调整构建。现在这比 google 设置的复杂模型要简单得多,因为它已成为您在容器中构建的基础,但您喜欢并在一个 docker 映像中安装您需要的任何工具。

    即。当心 google 快速入门,老实说,与 circleCI 和其他系统相比,恕我直言,它确实过于复杂。 (当然,这只是一个观点,每个人都有自己的观点)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      相关资源
      最近更新 更多