我是 Docker 新手,正在尝试 Dockerize 我的 FastAPI 应用程序。首先我创建了一个 Dockerfile:
FROM python:3.9.9
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
Run Code Online (Sandbox Code Playgroud)
然后运行以下命令:
docker build -t fastapi .
Run Code Online (Sandbox Code Playgroud)
命令成功运行。
之后我创建了以下 docker-compose.yml:
version: "3"
services:
api:
build: .
ports:
- 8000:8000
env_file:
./.env
Run Code Online (Sandbox Code Playgroud)
然后运行以下命令:
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)
跑成功:
Network fastapi_default Created 0.7s
- Container fastapi_api_1 Started
Run Code Online (Sandbox Code Playgroud)
然后为了检查它是否正常运行,我运行了以下命令:
docker ps -a
Run Code Online (Sandbox Code Playgroud)
它显示容器在创建后几秒钟就退出了。
然后我运行了这个命令:
docker logs fastapi_api_1
Run Code Online (Sandbox Code Playgroud)
它说:
/bin/sh: 1: [uvicorn,: not found
Run Code Online (Sandbox Code Playgroud)
不知道是什么原因。尝试了我在网上找到的一些解决方案,但没有任何效果。我的requirements.txt …