需要在Google App Engine的Flex环境中工作的需要帮助容器化的应用程序

问题描述 投票:0回答:1

我正在尝试将我在App Engine Flex环境中使用过的应用容器化。我能够使用Cloud Build创建Docker映像,存储在Cloud Registry中,并启动GKE pod。但是,在部署和公开后,出现以下错误:

severity: "ERROR"  
 textPayload: "Traceback (most recent call last):
  File "main.py", line 19, in <module>
    app = worldgiftart.create_app(config)
  File "/app/worldgiftart/_init_.py", line 40, in create_app
    from .crud import crud
  File "/app/worldgiftart/crud.py", line 15, in <module>
    from worldgiftart import get_model, storage
  File "/app/worldgiftart/storage.py", line 20, in <module>
    from google.cloud import storage
  File "/usr/local/lib/python3.8/site-packages/google/cloud/storage/_init_.py", line 38, in <module>
    from google.cloud.storage.blob import Blob
  File "/usr/local/lib/python3.8/site-packages/google/cloud/storage/blob.py", line 54, in <module>
    from google.cloud.iam import Policy
ModuleNotFoundError: No module named 'google.cloud.iam'

这是我的Dockerfile:

FROM python:3
WORKDIR /app
ADD . /app

RUN pip install -r requirements.txt

# Open port 80 for serving the webpage
EXPOSE 80

# Run main.py when the container launches
CMD ["python", "main.py"]

这里是requirements.txt

Flask==1.1.2
google-cloud-datastore==1.12.0
google-cloud-storage==1.28.1
gunicorn==20.0.4
oauth2client==4.1.3
Flask-SQLAlchemy==2.4.1
PyMySQL==0.9.3
Flask-PyMongo==2.3.0
PyMongo==3.10.1
six==1.14.0

任何建议要检查或更改的内容?

谢谢-乔

python docker build google-kubernetes-engine
1个回答
1
投票

看起来问题是App Engine和GKE之间的区别。部署到App Engine会自动处理为服务帐户分配适当的权限; GKE并非如此。必须建立服务帐户并绑定适当的权限。感谢所有看过的人。希望这对以后的人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.