首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FastAPI FastAPI的码头端口转发

FastAPI FastAPI的码头端口转发
EN

Stack Overflow用户
提问于 2022-08-23 14:32:53
回答 1查看 304关注 0票数 0

我有一个名为FastAPI的简单toyrest项目,它运行一个简单的API。代码看起来是这样的。

代码语言:javascript
复制
from fastapi import FastAPI

__version__ = "1.0.0"

app = FastAPI()


@app.get("/")
def root():
    return "hello"

我已经围绕它构建了通常的Python包基础设施。我可以安装这个包。如果我运行uvicorn toyrest:app,服务器将在端口8000上启动,一切都正常。

现在我正试着让它在码头上运行。我有下面的Dockerfile

代码语言:javascript
复制
# 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转发给正在运行的容器。

代码语言:javascript
复制
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命令,我看不出我是怎么搞错的,但不知怎么的,我错了我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-23 14:37:43

尝试将这一行添加到您的CMD中的̀dockerfile`中:

代码语言:javascript
复制
CMD ["uvicorn", "toyrest:app","--host", "0.0.0.0"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73460583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档