web-dev-qa-db-fra.com

Comment installer le SDK Google Cloud dans une image Docker?

Comment créer un conteneur Docker avec l'outil de ligne de commande dans le cloud de Google ?

Le script situé à l’URL https://sdk.cloud.google.com semble nécessiter la saisie de l’utilisateur, il ne fonctionne donc pas dans un fichier de menu fixe.

16
Jeremy

Ajouter ce qui suit à mon fichier Docker semble fonctionner.

# 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
22
Jeremy

Utilisez ce one-liner dans votre fichier Dockerfile:

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

source: https://docs.docker.com/v1.8/installation/google/

10
Radu Gabriel

Le faire avec Alpine:

 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
5
adi biton
RUN curl -sSL https://sdk.cloud.google.com > /tmp/gcl && bash /tmp/gcl --install-dir=~/gcloud --disable-prompts`
4
KJoe

En guise d'alternative, vous pouvez utiliser l'image du menu fixe fournie par Google, à savoir google/cloud-sdk. https://hub.docker.com/r/google/cloud-sdk/

3
hirowatari

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

Construire:

docker build . -t google-cloud-sdk

Puis lancez gcloud:

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

... ou exécutez gsutil:

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

Le dossier assets local contiendra la configuration.

1
fredrik

Ce travail pour moi.

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
0
Jesús Díaz

J'ai utilisé la plupart de ces exemples sous une forme quelconque (merci @KJoe), mais je devais faire plusieurs autres choses pour tout configurer afin que gcloud puisse fonctionner dans l'environnement. Notez qu'il est préférable de limiter le nombre de lignes (cela limite les couches nécessaires pour tirer)

Voici un exemple plus complet de fichier Docker avec la configuration gcloud et l’extension d’une image 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
0
kross

Mon cas d'utilisation consistait à générer un jeton Google Bearer à l'aide du compte de service. Je souhaitais donc que le conteneur Docker installe gcloud. Voici à quoi ressemble mon fichier Docker.

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"]

Si vous devez examiner un conteneur après sa construction mais que cela ne fonctionne pas, utilisez docker run --rm -it <container-build-id> bash -il et saisissez gcloud --version s'il est installé correctement ou non.

0
pushya

Un exemple utilisant debian comme image de base:

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
0
Chris Stryczynski