簡體   English   中英

如何使用自定義容器鏡像部署谷歌雲功能

[英]How to deploy google cloud functions using custom container image

為了在我的谷歌雲 function 中啟用 webdriver,我使用 docker 文件創建了一個自定義容器:

FROM python:3.7
COPY . /
WORKDIR /
RUN pip3 install -r requirements.txt
RUN apt-get update 
RUN apt-get install -y gconf-service libasound2 libatk1.0-0 libcairo2 libcups2 libfontconfig1 libgdk-pixbuf2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libxss1 fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils

#download and install chrome
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install

#install python dependencies
COPY requirements.txt requirements.txt 
RUN pip install -r ./requirements.txt 

# 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

#some envs
ENV PORT 5000

#copy local files
COPY . . 

CMD exec gunicorn --bind :${PORT} --workers 1 --threads 8 main:app 
ENTRYPOINT ["webcrawler"]

我在這個 docker 中安裝了 gcloud,這樣我就可以使用gcloud deploy來部署我的雲功能。 然后,我使用這個 cloudbuild.yaml 部署我的腳本:

steps:
  - name: 'us-central1-docker.pkg.dev/$PROJECT_ID/webcrawler-repo/webcrawler:tag1'
    entrypoint: 'gcloud'
    args: ['functions', 'deploy', 'MY_FUN', '--trigger-topic=MY_TOPIC', '--runtime=python37', '--entry-point=main', '--region=us-central1', '--memory=512MB', '--timeout=540s']
    id: 'deploying MY_FUN'
    dir: 'MY_DIR'

但是,我最終在部署時遇到了這個錯誤:

ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: invalid storage source object "MY_FUN-ba7acf95-4297-46b3-b76e-1c25ba21ba03/version-14/function-source.zip" in bucket "gcf-sources-967732204245-us-central1": failed to get storage object: Get "https://storage.googleapis.com/storage/v1/b/gcf-sources-967732204245-us-central1/o/MY_FUN-ba7acf95-4297-46b3-b76e-1c25ba21ba03%2Fversion-14%2Ffunction-source.zip?alt=json&prettyPrint=false": RPC::UNREACHABLE: gslb: no reachable backends
ERROR
ERROR: build step 0 "us-central1-docker.pkg.dev/PROJECT_ID/webcrawler-repo/webcrawler:tag1" failed: step exited with non-zero status: 1

知道如何解決這個問題嗎?

謝謝!

雲函數允許您僅部署您的代碼。 使用 buildpack 打包到容器中會自動為您執行。

如果您已經有一個容器,最好的解決方案是將其部署在Cloud Run上。 如果您的網絡服務器偵聽端口 5000,請不要忘記在部署期間覆蓋此值(使用--port參數)。

要將您的 PubSub 主題插入您的 Cloud Run 服務,您有 2 個解決方案

在這兩種情況下,您都需要在傳遞給 PubSub 推送訂閱或 EventArc 的 Cloud Run 服務上使用具有 run.invoker 角色的服務帳戶來確保安全性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM