运行docker composition up后,拒绝连接到mongodb

jgzswidk  于 2023-01-08  发布在  Docker
关注(0)|答案(2)|浏览(135)

在运行docker composite up并进入0.0.0..:8000/docs后,在fastapi项目x1c 0d1x中使用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"

停靠文件内容:

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中的环境变量并运行应用程序?

6ss1mwsb

6ss1mwsb1#

我相信@MatsLindh可能是对的,您需要在Docker内部网络中使用MongoDB的运行示例来寻址另一个容器的主机(在您的例子中是db容器)。

bihw5rsg

bihw5rsg2#

在docker-compose中将container_name添加到db服务,然后在python代码中连接到时使用其名称作为主机。
例如

mongodb://root:example@container_name:27017/?authMechanism=DEFAULT

相关问题