Я создаю базовый образ google-cloud-sdk и пытаюсь сохранить его стройным.
ARG GCLOUD_SDK_VERSION=285.0.1-alpine
FROM google/cloud-sdk:$GCLOUD_SDK_VERSION
# Install Java 8 for Datastore emulator
RUN apk add --update --no-cache \
openjdk8-jre
RUN gcloud components install \
cloud-datastore-emulator \
pubsub-emulator \
beta \
--quiet
...
Пока все в порядке. И когда я строю и смотрю на вывод команды gcloud components install
, я чувствую себя уверенно:
┌──────────────────────────────────────────────────┐
│ These components will be installed. │
├──────────────────────────┬────────────┬──────────┤
│ Name │ Version │ Size │
├──────────────────────────┼────────────┼──────────┤
│ Cloud Datastore Emulator │ 2.1.0 │ 18.4 MiB │
│ Cloud Pub/Sub Emulator │ 2019.09.27 │ 34.9 MiB │
│ gcloud Beta Commands │ 2019.05.17 │ < 1 MiB │
└──────────────────────────┴────────────┴──────────┘
Мой окончательный размер изображения, однако, шокирует: 1,11 ГБ. Когда я просматриваю историю docker, я вижу, что при установке компонента фактически было выделено 654 МБ для окончательного размера образа:
CREATED BY SIZE
/bin/sh -c gcloud components install … 654MB
/bin/sh -c apk add --update --no-cache … 78.2MB
В настоящее время я предполагаю, что это как-то связано с последней строкой процесса установки.
╔════════════════════════════════════════════════════════════╗
╠═ Creating backup and activating new installation ═╣
╚════════════════════════════════════════════════════════════╝
Кажется, это неплохо иметь на локальной рабочей станции, но не на изображении docker. Я попытался выяснить, могу ли я деактивировать эту резервную копию или удалить ее позже. Не было никакого полезного параграфа на страницах руководства, и поиск в Интернете всегда подсказывает мне некоторые процедуры резервного копирования в облачную базу данных, которые вы можете инициировать с помощью команд gcloud
.
Кто-нибудь еще знает о том, что здесь происходит? Может быть, это не резервная копия вообще, которая вносит вклад в большинство накладных расходов?