【发布时间】:2022-11-04 00:53:51
【问题描述】:
我制作了一个 FastAPI API 服务,每个“端点排序”都有路由,可以使用“uvicorn main:app --reload”通过终端在本地运行它。使用 Docker-compose 运行它也可以正常工作。 (文件结构见截图)
每当我尝试构建映像并执行“docker run myimage”时,它都会启动并显示地址:http://0.0.0.0:8000。然而,由于某种原因,向它发送请求似乎不起作用。为什么“Docker-compose”有效而“Docker Run”无效?
我需要一个可以在 Google Cloud 上运行的 docker 映像。我对 Docker 比较陌生,所以这对我来说似乎完全是魔法。很想了解我在这里做错了什么。
我的 Dockerfile:
FROM python:3.8.10
COPY ./app /app
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt
RUN apt-get update
RUN apt-get --yes install libsndfile1-dev
EXPOSE 8000
CMD uvicorn app.main:app --host 0.0.0.0 --port 8000
我的 Docker 撰写文件:
version: '3.3'
services:
app:
build: .
command: uvicorn app.main:app --host 0.0.0.0 --port 8000
ports:
- "8000:8000"
我的 main.py:
from fastapi import FastAPI
import uvicorn
import os
from app.routes.api import router as api_router
app = FastAPI()
app.include_router(api_router)
@app.get('/')
def index():
return {'message': 'Everything online'}
【问题讨论】:
-
尝试连接到运行“Docker Run”的主机上的地址localhost:8000 时会发生什么?
-
您是否尝试过
uvicorn src.main:app ...?
标签: docker docker-compose fastapi uvicorn