gcloud重建完整的容器,但Dockerfile相同,只是脚本已更改
我正在使用gcloud构建Docker容器:gcloud重建完整的容器,但Dockerfile相同,只是脚本已更改,docker,google-cloud-platform,gcloud,Docker,Google Cloud Platform,Gcloud,我正在使用gcloud构建Docker容器: gcloud builds submit --timeout 1000 --tag eu.gcr.io/$PROJECT_ID/dockername Dockerfiles/folder_with_dockerfile Dockerfile的最后两个步骤包含以下内容: COPY script.sh . CMD bash script.sh 我想测试的许多更改都在脚本中。因此Dockerfile保持完整。使用Docker compose在Linux
gcloud builds submit --timeout 1000 --tag eu.gcr.io/$PROJECT_ID/dockername Dockerfiles/folder_with_dockerfile
Dockerfile的最后两个步骤包含以下内容:
COPY script.sh .
CMD bash script.sh
我想测试的许多更改都在脚本中。因此Dockerfile保持完整。使用Docker compose在Linux上构建这些Docker文件会导致非常快速的构建,因为它检测不到任何更改。但是,在gcloud上执行此操作时,我注意到正在重新生成完整的Docker,而在script.sh中只创建了一个小的更改
有什么方法可以防止这种行为吗?实际上,
gcloud
有一个:
gcloud生成提交
命令:
- 压缩当前目录中的应用程序代码、Dockerfile和任何其他资产,如
所示李> - 将文件上传到存储桶中李>
- 使用上传的文件作为输入启动构建李>
- 使用提供的名称标记图像李>
- 将生成的映像推送到容器注册表
- 建造更精简的容器李>
- 使用缓存特性李>
- 使用定制的高CPU虚拟机李>
- 从上传中排除不必要的文件
这些可以优化整个构建过程 实际上,
gcloud
有一个:
gcloud生成提交
命令:
- 压缩当前目录中的应用程序代码、Dockerfile和任何其他资产,如
所示李> - 将文件上传到存储桶中李>
- 使用上传的文件作为输入启动构建李>
- 使用提供的名称标记图像李>
- 将生成的映像推送到容器注册表
- 建造更精简的容器李>
- 使用缓存特性李>
- 使用定制的高CPU虚拟机李>
- 从上传中排除不必要的文件
gcloud config set builds/use_kaniko True
第一次构建容器时,它将为缓存提供数据(默认情况下为6小时),其余时间将更快,因为依赖项将被缓存
如果您需要进一步加快构建速度,我将使用两个容器,并在本地GCP容器注册表中同时使用这两个容器:
- 第一个作为缓存,具有所有远程依赖项(OS/language/framework/etc)
- 第二个是使用缓存容器作为基础的COPY和CMD
gcloud config set builds/use_kaniko True
第一次构建容器时,它将为缓存提供数据(默认情况下为6小时),其余时间将更快,因为依赖项将被缓存
如果您需要进一步加快构建速度,我将使用两个容器,并在本地GCP容器注册表中同时使用这两个容器:
- 第一个作为缓存,具有所有远程依赖项(OS/language/framework/etc)
- 第二个是使用缓存容器作为基础的COPY和CMD