需要帮助容器化在Google App Engine,Flex Environment中运行的应用程序



我正在尝试容器化我正在使用的应用程序引擎,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

有什么建议要检查或更改吗?

谢谢 - 乔

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

最新更新