Подтвердить что ты не робот

Как установить Google Cloud SDK в изображение Docker?

Как я могу создать контейнер Docker с Инструмент командной строки Google Cloud Command/SDK?

script на url https://sdk.cloud.google.com, по-видимому, требует ввода пользователя, поэтому он не работает в файле докеров.

4b9b3361

Ответ 1

Добавление следующего к моему файлу Docker работает.

# Downloading gcloud package
RUN curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz

# Installing the package
RUN mkdir -p /usr/local/gcloud \
  && tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz \
  && /usr/local/gcloud/google-cloud-sdk/install.sh

# Adding the package path to local
ENV PATH $PATH:/usr/local/gcloud/google-cloud-sdk/bin

Ответ 3

Делаем это с альпийским:

 FROM alpine:3.6

 RUN apk add --update \
 python \
 curl \
 which \
 bash

 RUN curl -sSL https://sdk.cloud.google.com | bash

 ENV PATH $PATH:/root/google-cloud-sdk/bin

Ответ 4

В качестве альтернативы вы можете использовать изображение докера, предоставленное Google, а именно google/cloud-sdk. https://hub.docker.com/r/google/cloud-sdk/

Ответ 5

RUN curl -sSL https://sdk.cloud.google.com > /tmp/gcl && bash /tmp/gcl --install-dir=~/gcloud --disable-prompts`

Ответ 6

Dockerfile:

FROM centos:7

RUN yum update -y && yum install -y \
                    curl \
                    which && \
    yum clean all

RUN curl -sSL https://sdk.cloud.google.com | bash

ENV PATH $PATH:/root/google-cloud-sdk/bin

Сложение:

docker build . -t google-cloud-sdk

Затем запустите gcloud:

docker run --rm \
--volume $(pwd)/assets/root/.config:/root/.config \
google-cloud-sdk gcloud

... или запустите gsutil:

docker run --rm \
--volume $(pwd)/assets/root/.config:/root/.config \
google-cloud-sdk gsutil

Локальная папка assets будет содержать конфигурацию.

Ответ 7

Я использовал большинство этих примеров в некоторой форме (спасибо @KJoe), но мне пришлось сделать еще несколько вещей, чтобы настроить все, чтобы gcloud работал в среде. Обратите внимание, что предпочтительнее ограничить количество строк (это ограничивает слои, которые необходимо вытащить)

Вот более полный пример Dockerfile с gcloud настройкой и расширением образа CircleCI:

FROM circleci/ruby:2.4.1-jessie-node-browsers

# user is circleci in the FROM image, switch to root for system lib installation
USER root

ENV CCI /home/circleci
ENV GTMP /tmp/gcloud-install
ENV GSDK $CCI/google-cloud-sdk
ENV PATH="${GSDK}/bin:${PATH}"

# do all system lib installation in one-line to optimize layers
RUN curl -sSL https://sdk.cloud.google.com > $GTMP && bash $GTMP --install-dir=$CCI --disable-prompts \
  && rm -rf $GTMP \
  && chmod +x $GSDK/bin/* \
  \
  && chown -Rf circleci:circleci $CCI

# change back to the user in the FROM image
USER circleci

# setup gcloud specifics to your liking
RUN gcloud config set core/disable_usage_reporting true \
  && gcloud config set component_manager/disable_update_check true \
  && gcloud components install alpha beta kubectl --quiet

Ответ 8

Мой пример использования состоял в том, чтобы сгенерировать токен на предъявителя Google, используя служебную учетную запись, поэтому я хотел, чтобы gcloud контейнер установил gcloud Так выглядит мой файл gcloud

FROM google/cloud-sdk
# Setting the default directory in container
WORKDIR /usr/src/app
# copies the app source code to the directory in container
COPY . /usr/src/app
CMD ["/bin/bash","/usr/src/app/token.sh"]

Если вам нужно проверить контейнер после его docker run --rm -it <container-build-id> bash -il но он не запущен, используйте docker run --rm -it <container-build-id> bash -il и введите gcloud --version если он установлен правильно или нет

Ответ 9

Это работа для меня.

FROM php:7.2-fpm

RUN apt-get update -y

RUN apt-get install -y python && \
    curl -sSL https://sdk.cloud.google.com | bash

ENV PATH $PATH:/root/google-cloud-sdk/bin

Ответ 10

Пример использования Debian в качестве базового образа:

FROM debian:stretch

RUN apt-get update && apt-get install -y apt-transport-https gnupg curl lsb-release

RUN export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \
  echo "cloud SDK repo: $CLOUD_SDK_REPO" && \
  echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \
  curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
  apt-get update -y && apt-get install google-cloud-sdk -y

Ответ 11

Я получил это, работая с Ubuntu 18.04, используя:

RUN apt-get install -y curl && curl -sSL https://sdk.cloud.google.com | bash
ENV PATH="$PATH:/root/google-cloud-sdk/bin"

Ответ 12

apk upgrade --update-cache --available && \
apk add openssl && \
apk add curl python3 py-crcmod bash libc6-compat && \
rm -rf /var/cache/apk/*
curl https://sdk.cloud.google.com | bash > /dev/null
export PATH=$PATH:/root/google-cloud-sdk/bin
gcloud components update kubectl