1

我有一个可能很简单的问题,但我自己找不到解决方案......

我用 docker-compose 运行了两个 docker 容器,一个是带有 fastapi 的 python 服务器,另一个是 neo4j 官方镜像,禁用了身份验证(用于开发环境)这里是连接数据库的一段代码:

    def __new__(cls, settings: Neo4jSettings, *args, **kwargs):
        try:
            cls.driver = GraphDatabase.driver(settings.neo4j_url())
            log.info(f'Connected as "{settings.neo4j_user}" on {settings.neo4j_url()}')

        except exceptions.ServiceUnavailable as err:
            log.error(f'Service Unavailable: {err}')
        # other error handling

在我的本地机器上:一切都按预期工作:当数据库运行时,我看到了connected ...消息,一切正常。当我关闭数据库时,neo4j 潜水员提出 a Service Unavailable,我显示错误。

ON DOCKER:当两个容器运行时,一切都按预期工作,具有正确的数据库 url。但是,如果我将 url 更改为随机的,或者即使我关闭了数据库容器,connected ...也会显示该消息。看起来 neo4j 驱动程序没有引发任何异常......但找不到原因。

这是我的 Dockerfile:

FROM python:3.7-slim # tried with 3.9 too  

WORKDIR /app


ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

COPY requirements.txt .

RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["uvicorn", "main:api", "--reload" ,"--host", "0.0.0.0", "--port", "8000"]

谢谢你,请原谅我的英语......

4

0 回答 0