我有一个名为FastAPI的简单toyrest项目,它运行一个简单的API。代码看起来是这样的。
from fastapi import FastAPI
__version__ = "1.0.0"
app = FastAPI()
@app.get("/")
def root():
return "hello"我已经围绕它构建了通常的Python包基础设施。我可以安装这个包。如果我运行uvicorn toyrest:app,服务器将在端口8000上启动,一切都正常。
现在我正试着让它在码头上运行。我有下面的Dockerfile
# syntax=docker/dockerfile:1
FROM python:3
# Create a user.
RUN useradd --user-group --system --create-home --no-log-init user
USER user
ENV PATH=/home/user/.local/bin:$PATH
# Install the API.
WORKDIR /home/user
COPY --chown=user:user . ./toyrest
RUN python -m pip install --upgrade pip && \
pip install -r toyrest/requirements.txt
RUN pip install toyrest/ && \
rm -rf /home/user/toyrest
CMD ["uvicorn", "toyrest:app"]我构建了Docker映像并运行它,将端口8000转发给正在运行的容器。
docker run -p 8000:8000 toyrest:1.0.0
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)当我试图连接到http://127.0.0.1:8000/时,我没有得到任何响应。
大概是我做的端口转发不正确。我尝试过各种端口转发参数的排列(例如,-p 8000、-p 127.0.0.1:8000:8000),但都没有结果。
这是一个基本的Docker命令,我看不出我是怎么搞错的,但不知怎么的,我错了我做错了什么?
发布于 2022-08-23 14:37:43
尝试将这一行添加到您的CMD中的̀dockerfile`中:
CMD ["uvicorn", "toyrest:app","--host", "0.0.0.0"]https://stackoverflow.com/questions/73460583
复制相似问题