2015-02-06 12 views
5

मैं Google's Cloud Command Line Tool/SDK के साथ डॉकर कंटेनर कैसे बना सकता हूं?डॉकर छवि में Google क्लाउड एसडीके कैसे इंस्टॉल करें?

यूआरएल https://sdk.cloud.google.com पर लिपि में उपयोगकर्ता इनपुट की आवश्यकता होती है, इसलिए डॉकर फ़ाइल में काम नहीं करता है।

उत्तर

10

मेरी डॉकर फ़ाइल में निम्नलिखित जोड़ना काम प्रतीत होता है।

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

मैं सुविधा के लिए जोड़ना होगा: ध्यान दें कि यह लाइनों की संख्या सीमित करने के लिए बेहतर है

यहाँ gcloud सेटअप के साथ Dockerfile को अधिक अच्छी तरह उदाहरण है और एक CircleCI छवि का विस्तार (यह खींच करने के लिए आवश्यक परतों को सीमित करता है) पाथ पर्यावरण चर के लिए एक एनएनवी निर्देश: ENV $ पाथ:/usr/local/gcloud/google-cloud-sdk/bin – Silviu

+1

मुझे लगता है कि आपको 'ENV पथ $ पाथ की आवश्यकता है:/usr/local/gcloud/google-cloud -एसडीके/बिन' – Narek

+0

मुझे लगता है कि अब आपको /usr/local/gcloud/google-cloud-sdk/install.sh --quiet (मैन्युअल चरण से बचने के लिए शांत ध्वज जोड़ने की आवश्यकता है) –

5

उपयोग आपकी Dockerfile में इस एक लाइनर:

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

स्रोत: https://docs.docker.com/v1.8/installation/google/

+0

कार्य डी 'एनवी पाथ $ पाथ के साथ:/usr/local/gcloud/google-cloud-sdk/bin' – Narek

+0

इंस्टॉल स्थान विभिन्न इंस्टॉलेशन के लिए अलग होगा लेकिन सिद्धांत यहां ध्वनि – 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 

बिल्ड:

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 फ़ोल्डर में कॉन्फ़िगरेशन होगा।

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

है जो आपने अभी जोड़ा गया कोड समझाएं, सुधारने के लिए आपका उत्तर। केवल कोड या प्रश्न पोस्ट करने से बचें ... –

+0

यह सही प्रतिक्रिया है। सुनिश्चित करें कि आपके पास आपके डॉकर कंटेनर में 'tar' और 'कौन सा' स्थापित है। – Dovy

0

मैं किसी न किसी रूप (धन्यवाद @KJoe) में इन उदाहरणों में से सबसे अधिक इस्तेमाल किया है, लेकिन मैं सेटअप सब कुछ करने के लिए कई अन्य चीजें इतनी gcloud वातावरण में काम करेगा करना था।

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 
संबंधित मुद्दे