2015-02-06 25 views

Odpowiedz

10

Dodaje się następujące elementy do mojego pliku Docker.

RUN curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz 
RUN mkdir -p /usr/local/gcloud 
RUN tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz 
RUN /usr/local/gcloud/google-cloud-sdk/install.sh 
ENV $PATH:/usr/local/gcloud/google-cloud-sdk/bin 
+2

Dodam dla wygody dyrektywa ENV dla zmiennej środowiskowej PATH: ENV $ ŚCIEŻKA:/usr/local/gcloud/google-cloud-sdk/bin – Silviu

+1

Myślę, że potrzebujesz 'ENV PATH $ PATH:/usr/local/gcloud/google-cloud -sdk/bin' – Narek

+0

Myślę, że potrzebujesz teraz /usr/local/gcloud/google-cloud-sdk/install.sh --quiet (musisz dodać cichą flagę, aby uniknąć kroku ręcznego) –

5

Użyj tego jednego-liner w Dockerfile:

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

źródło: https://docs.docker.com/v1.8/installation/google/

+0

Worke d z 'ENV PATH $ ŚCIEŻKA:/usr/local/gcloud/google-cloud-sdk/bin' – Narek

+0

Lokalizacja instalacji będzie różna dla różnych instalacji, ale teoria tutaj brzmi: – deepelement

1

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 

Budowa:

docker build . -t google-cloud-sdk 

Następnie uruchom gcloud:

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

... lub uruchomić gsutil:

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

Lokalny folder assets będzie zawierał konfigurację.

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

Proszę wyjaśnij kod, który właśnie dodałeś, aby ulepszyć Twoja odpowiedź. Unikaj zamieszczania odpowiedzi lub pytań tylko kodu ... –

+0

To jest poprawna odpowiedź. Upewnij się, że masz 'tar' i' which' zainstalowane w twoim oknie dokowanym. – Dovy

0

Kiedyś większość z tych przykładów w jakiejś formie (dzięki @KJoe), ale musiałem zrobić kilka innych rzeczy do ustawiania wszystkiego tak gcloud będzie pracować w środowisku. Należy pamiętać, że lepiej jest, aby ograniczyć liczbę wierszy (ogranicza warstw potrzebnych do ciągnięcia)

Oto bardziej kompletny przykład Dockerfile z gcloud konfiguracji i rozciągające się CircleCI obraz:

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 
Powiązane problemy