当 Cloud Run 运行容器映像时,容器的失败情况与我在本地运行容器时的失败情况不同。
我在
app/main.py
中添加了这个 try/ except 来调试不同的行为:
print(f'cwd is {os.getcwd()}')
try:
from .make_sticker.config import StickerConfig
print('relative worked')
except:
from make_sticker.config import StickerConfig
print('except worked')
当我在本地运行容器时,应用程序会记录“除了工作”。 当我在 Cloud Run 中运行容器时,应用程序失败并不会记录任何内容。
这是我的 Dockerfile:
FROM python:3.12
WORKDIR /code
COPY app/requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
COPY app/ /code/app
ENV PYTHONPATH=/code/app
WORKDIR /code/app
RUN ls -la
EXPOSE 5001
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "5001"]
这是怎么回事?
我将进一步调试以了解发生了什么,但只需将父 python 模块的名称从
app
更改为 fastapp
,导入即可在 Cloud Run 环境中运行。