小编San*_*333的帖子

如何在公开端口的 docker 容器中运行 uvicorn?

我正在 windows/ubuntu 中的 docker 容器内开发 fastapi (代码如下)。当我通过在终端中运行python -m uvicorn app:app --reload测试容器外部的应用程序时,然后导航到127.0.0.1:8000/home一切正常:

{
  Data: "Test"
}
Run Code Online (Sandbox Code Playgroud)

但是,当我docker-compose up时,我既无法在容器中运行python -m uvicorn app:app --reload(由于端口已被使用),也无法在浏览器中看到任何返回的内容。我尝试过 127.0.0.1:8000/home、host.docker.internal:8000/home 和 localhost:8000/home 并且我总是收到:

{
   detail: "Not Found"
}
Run Code Online (Sandbox Code Playgroud)

我缺少哪一步?

Dockerfile:

FROM python:3.8-slim

EXPOSE 8000

ENV PYTHONDONTWRITEBYTECODE=1

ENV PYTHONUNBUFFERED=1

COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

RUN adduser -u nnnn --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

CMD ["gunicorn", …
Run Code Online (Sandbox Code Playgroud)

python docker fastapi uvicorn

1
推荐指数
1
解决办法
7373
查看次数

标签 统计

docker ×1

fastapi ×1

python ×1

uvicorn ×1