1

おそらく非常に単純な問題がありますが、自分で解決策を見つけることができません...

私は docker-compose で 2 つの docker コンテナーを実行します。1 つは fastapi を使用する python サーバーで、もう 1 つは認証を無効にした (開発環境用の) 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 を使用して、2 つのコンテナーが実行されている場合、すべてが期待どおりに機能します。しかし、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