如何使用Google's Cloud Command Line Tool/SDK构建Docker容器?
网址https://sdk.cloud.google.com上的脚本似乎需要用户输入,因此无法在泊坞窗文件中使用。
答案 0 :(得分:28)
将以下内容添加到我的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
答案 1 :(得分:14)
在Dockerfile中使用这个单行程序:
RUN curl -sSL https://sdk.cloud.google.com | bash
答案 2 :(得分:9)
与高山一起做
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
答案 3 :(得分:4)
作为替代方案,您可以使用Google提供的docker镜像google/cloud-sdk
。 https://hub.docker.com/r/google/cloud-sdk/
答案 4 :(得分:4)
RUN curl -sSL https://sdk.cloud.google.com > /tmp/gcl && bash /tmp/gcl --install-dir=~/gcloud --disable-prompts`
答案 5 :(得分:2)
要在 docker 容器中安装 gcloud,请按照此处https://cloud.google.com/sdk/docs/install#deb
的说明进行操作。
基本上你需要运行
RUN apt-get update && \
apt-get install -y curl gnupg && \
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk 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 --keyring /usr/share/keyrings/cloud.google.gpg add - && \
apt-get update -y && \
apt-get install google-cloud-sdk -y
在您的 dockerfile 中
答案 6 :(得分: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
文件夹将包含配置。
答案 7 :(得分:0)
我以某种形式使用了大多数这些示例(感谢@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 :(得分:0)
我的用例是使用服务帐户生成google bearer令牌,所以我希望docker容器安装gcloud
这就是我的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"]
如果您需要在构建容器后检查容器但未运行使用docker run --rm -it <container-build-id> bash -il
并输入gcloud --version
如果安装正确与否
答案 9 :(得分:0)
这项工作适合我。
.dockerignore
答案 10 :(得分:0)
使用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 :(得分:0)
我使用以下命令在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 :(得分:0)
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
答案 13 :(得分:0)
我使用 Python Alpine 映像 python:3.8.6-alpine3.12
作为基础,这对我有用:
RUN apk add --no-cache bash
RUN wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-327.0.0-linux-x86_64.tar.gz \
-O /tmp/google-cloud-sdk.tar.gz | bash
RUN mkdir -p /usr/local/gcloud \
&& tar -C /usr/local/gcloud -xvzf /tmp/google-cloud-sdk.tar.gz \
&& /usr/local/gcloud/google-cloud-sdk/install.sh -q
ENV PATH $PATH:/usr/local/gcloud/google-cloud-sdk/bin
google-cloud-sdk
并运行以下命令来检查是否安装了 docker exec -i -t <container_id> /bin/bash
:bash-5.0# gcloud --version
Google Cloud SDK 327.0.0
bq 2.0.64
core 2021.02.05
gsutil 4.58
bash-5.0# gsutil --version
gsutil version: 4.58
如果您想要特定版本的 google-cloud-sdk
,您可以访问 https://storage.cloud.google.com/cloud-sdk-release