【发布时间】:2023-01-04 21:12:38
【问题描述】:
在运行 docker compose up 并进入 0.0.0..:8000/docs 以在 fastapi 项目中使用 get 方法后,我收到以下错误,
.env 文件内容
MONGODB_URL = mongodb://localhost:27017/
MONGO_HOST = "0.0.0.0"
MONGO_PORT = 27017
MONGO_USER = ""
MONGO_PASS = ""
DATABASE_NAME = "myDatabase"
TEST1_COLLECTION="TEST1_COLLECTION"
TEST2_COLLECTION="TEST2_COLLECTION"
TEST3_COLLECTION="TEST3_COLLECTION"
Dockerfile 内容:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9
COPY ./requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt
COPY ./app /app/app
WORKDIR /app/app/
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
docker-compose.yml 内容
version: "3.9"
services:
app:
build: .
command: uvicorn app.main:app --host 0.0.0.0
ports:
- "8000:8000"
depends_on:
- db
db:
image: mongo
ports:
- "27017:27017"
volumes:
- ./data:/data/db
我做错了什么,因为我只需要在 docker 中使用环境变量并运行应用程序?
【问题讨论】:
-
您真的使用了空密码和用户名,还是只是为了问题将其删除?
-
mongodb://db:27017/?localhost指的是在容器内部,你需要通过docker的网络引用其他正在运行的容器。 -
您似乎附加了一个难以阅读的 PNG 文件来代替错误消息;你可以 edit 这个问题来代替包含错误的文本吗?
MONGODB_URL=localhost在我看来很可疑,因为它会告诉app容器连接到自身而不是db容器;看看pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused。
标签: python docker docker-compose fastapi