问题描述
我用 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 潜水员引发 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"]
谢谢,请原谅我的英语...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)