2015-02-06 60 views

Trả lời

10

Thêm thông tin sau vào tệp Docker của tôi dường như hoạt động.

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

tôi sẽ thêm cho thuận tiện một chỉ thị ENV cho biến môi trường PATH: ENV $ PATH:/usr/local/gcloud/google-cloud-sdk/bin – Silviu

+1

Tôi nghĩ bạn cần 'ENV PATH $ PATH:/usr/local/gcloud/google-cloud -sdk/bin' – Narek

+0

Tôi nghĩ bây giờ bạn cần /usr/local/gcloud/google-cloud-sdk/install.sh --quiet (cần thêm cờ yên tĩnh để tránh bước thủ công) –

5

Sử dụng này một lót trong Dockerfile của bạn:

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

nguồn: https://docs.docker.com/v1.8/installation/google/

+0

Worke d với 'ENV PATH $ PATH:/usr/local/gcloud/google-cloud-sdk/bin' – Narek

+0

Vị trí cài đặt sẽ khác nhau đối với các lượt cài đặt khác nhau nhưng lý thuyết ở đây là âm thanh – 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 

tích xây dựng:

docker build . -t google-cloud-sdk 

Sau đó chạy gcloud:

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

... hoặc chạy gsutil:

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

Thư mục assets cục bộ sẽ chứa cấu hình.

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

Vui lòng giải thích mã bạn vừa thêm, để cải thiện câu trả lời của bạn. Tránh chỉ đăng các câu trả lời hoặc câu hỏi về mã ... –

+0

Đây là câu trả lời chính xác. Hãy chắc chắn rằng bạn đã cài đặt 'tar' và' which' trong vùng chứa docker của bạn. – Dovy

0

tôi đã sử dụng hầu hết các ví dụ trong một số hình thức (nhờ @KJoe), nhưng tôi đã phải làm một vài điều khác để thiết lập tất cả mọi thứ để gcloud sẽ làm việc trong môi trường. Lưu ý rằng nó là một lợi thế để hạn chế số dòng (nó giới hạn các lớp cần thiết để kéo)

Dưới đây là một ví dụ hoàn chỉnh hơn về Dockerfile với gcloud thiết lập và mở rộng hình ảnh 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 
Các vấn đề liên quan