QuivrHQ / quivr

Open-source RAG Framework for building GenAI Second Brains 🧠 Build productivity assistant (RAG) ⚡️🤖 Chat with your docs (PDF, CSV, ...) & apps using Langchain, GPT 3.5 / 4 turbo, Private, Anthropic, VertexAI, Ollama, LLMs, Groq that you can share with users ! Efficient retrieval augmented generation framework
https://quivr.com
Other
35.98k stars 3.49k forks source link

[Bug]: windows11 wsl2 docker compose up failed #3196

Open caishanli opened 6 days ago

caishanli commented 6 days ago

What happened?

docker compose up failed, only redis and web started, beat worker flower notifier backend-api start failed.

Relevant log output

test@test-pc:~/quivr$ docker compose up
WARN[0000] /home/test/quivr/docker-compose.yml: `version` is obsolete
[+] Running 7/0
 ✔ Container backend-api  Created                                                                                             0.0s
 ✔ Container redis        Created                                                                                             0.0s
 ✔ Container beat         Created                                                                                             0.0s
 ✔ Container worker       Created                                                                                             0.0s
 ✔ Container web          Created                                                                                             0.0s
 ✔ Container flower       Created                                                                                             0.0s
 ✔ Container notifier     Created                                                                                             0.0s
Attaching to backend-api, beat, flower, notifier, redis, web, worker
redis        | 1:C 11 Sep 2024 15:38:41.581 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis        | 1:C 11 Sep 2024 15:38:41.581 * Redis version=7.2.3, bits=64, commit=00000000, modified=0, pid=1, just started
redis        | 1:C 11 Sep 2024 15:38:41.581 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis        | 1:M 11 Sep 2024 15:38:41.581 * monotonic clock: POSIX clock_gettime
redis        | 1:M 11 Sep 2024 15:38:41.582 * Running mode=standalone, port=6379.
redis        | 1:M 11 Sep 2024 15:38:41.583 * Server initialized
redis        | 1:M 11 Sep 2024 15:38:41.583 * Loading RDB produced by version 7.2.3
redis        | 1:M 11 Sep 2024 15:38:41.583 * RDB age 1664 seconds
redis        | 1:M 11 Sep 2024 15:38:41.583 * RDB memory usage when created 0.83 Mb
redis        | 1:M 11 Sep 2024 15:38:41.583 * Done loading RDB, keys loaded: 0, keys expired: 0.
redis        | 1:M 11 Sep 2024 15:38:41.583 * DB loaded from disk: 0.000 seconds
redis        | 1:M 11 Sep 2024 15:38:41.583 * Ready to accept connections tcp
backend-api  | INFO:     Will watch for changes in these directories: ['/app']
backend-api  | INFO:     Uvicorn running on http://0.0.0.0:5050 (Press CTRL+C to quit)
backend-api  | INFO:     Started reloader process [1] using StatReload
web          |    ▲ Next.js 14.1.0
web          |    - Local:        http://localhost:3000
web          |    - Network:      http://0.0.0.0:3000
web          |
web          |  ✓ Ready in 80ms
beat         | Usage: python -m celery [OPTIONS] COMMAND [ARGS]...
beat         | Try 'python -m celery --help' for help.
beat         |
beat         | Error: Invalid value for '-A' / '--app':
beat         | Unable to load celery application.
beat         | While trying to load the module quivr_worker.celery_worker the following error occurred:
beat         | Traceback (most recent call last):
beat         |   File "/usr/local/lib/python3.11/site-packages/celery/bin/celery.py", line 58, in convert
beat         |     return find_app(value)
beat         |            ^^^^^^^^^^^^^^^
beat         |   File "/usr/local/lib/python3.11/site-packages/celery/app/utils.py", line 386, in find_app
beat         |     sym = imp(app)
beat         |           ^^^^^^^^
beat         |   File "/usr/local/lib/python3.11/site-packages/celery/utils/imports.py", line 109, in import_from_cwd
beat         |     return imp(module, package=package)
beat         |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
beat         |   File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
beat         |     return _bootstrap._gcd_import(name[level:], package, level)
beat         |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
beat         |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
beat         |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
beat         |   File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
beat         |   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
beat         |   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
beat         |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
beat         |   File "/app/worker/quivr_worker/celery_worker.py", line 10, in <module>
beat         |     from quivr_api.models.settings import settings
beat         |   File "/app/api/quivr_api/models/settings.py", line 144, in <module>
beat         |     settings = BrainSettings()  # type: ignore
beat         |                ^^^^^^^^^^^^^^^
beat         |   File "/usr/local/lib/python3.11/site-packages/pydantic_settings/main.py", line 144, in __init__
beat         |     super().__init__(
beat         |   File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 193, in __init__
beat         |     self.__pydantic_validator__.validate_python(data, self_instance=self)
beat         | pydantic_core._pydantic_core.ValidationError: 1 validation error for BrainSettings
beat         | embedding_dim
beat         |   Field required [type=missing, input_value={'openai_api_key': 'CHANG...nternal:54322/postgres'}, input_type=dict]
beat         |     For further information visit https://errors.pydantic.dev/2.8/v/missing
beat         |
worker       | Usage: python -m celery [OPTIONS] COMMAND [ARGS]...
worker       | Try 'python -m celery --help' for help.
worker       |
worker       | Error: Invalid value for '-A' / '--app':
worker       | Unable to load celery application.
worker       | While trying to load the module quivr_worker.celery_worker the following error occurred:
worker       | Traceback (most recent call last):
worker       |   File "/usr/local/lib/python3.11/site-packages/celery/bin/celery.py", line 58, in convert
worker       |     return find_app(value)
worker       |            ^^^^^^^^^^^^^^^
worker       |   File "/usr/local/lib/python3.11/site-packages/celery/app/utils.py", line 386, in find_app
worker       |     sym = imp(app)
worker       |           ^^^^^^^^
worker       |   File "/usr/local/lib/python3.11/site-packages/celery/utils/imports.py", line 109, in import_from_cwd
worker       |     return imp(module, package=package)
worker       |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
worker       |   File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
worker       |     return _bootstrap._gcd_import(name[level:], package, level)
worker       |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
worker       |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
worker       |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
worker       |   File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
worker       |   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
worker       |   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
worker       |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
worker       |   File "/app/worker/quivr_worker/celery_worker.py", line 10, in <module>
worker       |     from quivr_api.models.settings import settings
worker       |   File "/app/api/quivr_api/models/settings.py", line 144, in <module>
worker       |     settings = BrainSettings()  # type: ignore
worker       |                ^^^^^^^^^^^^^^^
worker       |   File "/usr/local/lib/python3.11/site-packages/pydantic_settings/main.py", line 144, in __init__
worker       |     super().__init__(
worker       |   File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 193, in __init__
worker       |     self.__pydantic_validator__.validate_python(data, self_instance=self)
worker       | pydantic_core._pydantic_core.ValidationError: 1 validation error for BrainSettings
worker       | embedding_dim
worker       |   Field required [type=missing, input_value={'openai_api_key': 'CHANG...nternal:54322/postgres'}, input_type=dict]
worker       |     For further information visit https://errors.pydantic.dev/2.8/v/missing
worker       |
flower       | Usage: python -m celery [OPTIONS] COMMAND [ARGS]...
flower       | Try 'python -m celery --help' for help.
flower       |
flower       | Error: Invalid value for '-A' / '--app':
flower       | Unable to load celery application.
flower       | While trying to load the module quivr_worker.celery_worker the following error occurred:
flower       | Traceback (most recent call last):
flower       |   File "/usr/local/lib/python3.11/site-packages/celery/bin/celery.py", line 58, in convert
flower       |     return find_app(value)
flower       |            ^^^^^^^^^^^^^^^
flower       |   File "/usr/local/lib/python3.11/site-packages/celery/app/utils.py", line 386, in find_app
flower       |     sym = imp(app)
flower       |           ^^^^^^^^
flower       |   File "/usr/local/lib/python3.11/site-packages/celery/utils/imports.py", line 109, in import_from_cwd
flower       |     return imp(module, package=package)
flower       |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
flower       |   File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
flower       |     return _bootstrap._gcd_import(name[level:], package, level)
flower       |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
flower       |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
flower       |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
flower       |   File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
flower       |   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
flower       |   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
flower       |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
flower       |   File "/app/worker/quivr_worker/celery_worker.py", line 10, in <module>
flower       |     from quivr_api.models.settings import settings
flower       |   File "/app/api/quivr_api/models/settings.py", line 144, in <module>
flower       |     settings = BrainSettings()  # type: ignore
flower       |                ^^^^^^^^^^^^^^^
flower       |   File "/usr/local/lib/python3.11/site-packages/pydantic_settings/main.py", line 144, in __init__
flower       |     super().__init__(
flower       |   File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 193, in __init__
flower       |     self.__pydantic_validator__.validate_python(data, self_instance=self)
flower       | pydantic_core._pydantic_core.ValidationError: 1 validation error for BrainSettings
flower       | embedding_dim
flower       |   Field required [type=missing, input_value={'openai_api_key': 'CHANG...nternal:54322/postgres'}, input_type=dict]
flower       |     For further information visit https://errors.pydantic.dev/2.8/v/missing
flower       |
notifier     | Traceback (most recent call last):
notifier     |   File "/app/worker/quivr_worker/celery_monitor.py", line 11, in <module>
notifier     |     from quivr_api.modules.dependencies import async_engine
notifier     |   File "/app/api/quivr_api/modules/dependencies.py", line 22, in <module>
notifier     |     from quivr_api.models.settings import BrainSettings
notifier     |   File "/app/api/quivr_api/models/settings.py", line 144, in <module>
notifier     |     settings = BrainSettings()  # type: ignore
notifier     |                ^^^^^^^^^^^^^^^
notifier     |   File "/usr/local/lib/python3.11/site-packages/pydantic_settings/main.py", line 144, in __init__
notifier     |     super().__init__(
notifier     |   File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 193, in __init__
notifier     |     self.__pydantic_validator__.validate_python(data, self_instance=self)
notifier     | pydantic_core._pydantic_core.ValidationError: 1 validation error for BrainSettings
notifier     | embedding_dim
notifier     |   Field required [type=missing, input_value={'openai_api_key': 'CHANG...nternal:54322/postgres'}, input_type=dict]
notifier     |     For further information visit https://errors.pydantic.dev/2.8/v/missing
backend-api  | Process SpawnProcess-1:
backend-api  | Traceback (most recent call last):
backend-api  |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
backend-api  |     self.run()
backend-api  |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run
backend-api  |     self._target(*self._args, **self._kwargs)
backend-api  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
backend-api  |     target(sockets=sockets)
backend-api  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 65, in run
backend-api  |     return asyncio.run(self.serve(sockets=sockets))
backend-api  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend-api  |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
backend-api  |     return runner.run(main)
backend-api  |            ^^^^^^^^^^^^^^^^
backend-api  |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
backend-api  |     return self._loop.run_until_complete(task)
backend-api  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend-api  |   File "uvloop/loop.pyx", line 1517, in uvloop.loop.Loop.run_until_complete
backend-api  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 69, in serve
backend-api  |     await self._serve(sockets)
backend-api  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 76, in _serve
backend-api  |     config.load()
backend-api  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/config.py", line 434, in load
backend-api  |     self.loaded_app = import_from_string(self.app)
backend-api  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend-api  |   File "/usr/local/lib/python3.11/site-packages/uvicorn/importer.py", line 19, in import_from_string
backend-api  |     module = importlib.import_module(module_str)
backend-api  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend-api  |   File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
backend-api  |     return _bootstrap._gcd_import(name[level:], package, level)
backend-api  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend-api  |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
backend-api  |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
backend-api  |   File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
backend-api  |   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
backend-api  |   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
backend-api  |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
backend-api  |   File "/app/api/quivr_api/main.py", line 15, in <module>
backend-api  |     from quivr_api.modules.analytics.controller.analytics_routes import analytics_router
backend-api  |   File "/app/api/quivr_api/modules/analytics/controller/analytics_routes.py", line 4, in <module>
backend-api  |     from quivr_api.middlewares.auth.auth_bearer import AuthBearer, get_current_user
backend-api  |   File "/app/api/quivr_api/middlewares/auth/__init__.py", line 1, in <module>
backend-api  |     from .auth_bearer import AuthBearer, get_current_user
backend-api  |   File "/app/api/quivr_api/middlewares/auth/auth_bearer.py", line 10, in <module>
backend-api  |     from quivr_api.modules.api_key.service.api_key_service import ApiKeyService
backend-api  |   File "/app/api/quivr_api/modules/api_key/service/api_key_service.py", line 6, in <module>
backend-api  |     from quivr_api.modules.api_key.repository.api_keys import ApiKeys
backend-api  |   File "/app/api/quivr_api/modules/api_key/repository/api_keys.py", line 7, in <module>
backend-api  |     from quivr_api.modules.dependencies import get_supabase_client
backend-api  |   File "/app/api/quivr_api/modules/dependencies.py", line 22, in <module>
backend-api  |     from quivr_api.models.settings import BrainSettings
backend-api  |   File "/app/api/quivr_api/models/settings.py", line 144, in <module>
backend-api  |     settings = BrainSettings()  # type: ignore
backend-api  |                ^^^^^^^^^^^^^^^
backend-api  |   File "/usr/local/lib/python3.11/site-packages/pydantic_settings/main.py", line 144, in __init__
backend-api  |     super().__init__(
backend-api  |   File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 193, in __init__
backend-api  |     self.__pydantic_validator__.validate_python(data, self_instance=self)
backend-api  | pydantic_core._pydantic_core.ValidationError: 1 validation error for BrainSettings
backend-api  | embedding_dim
backend-api  |   Field required [type=missing, input_value={'openai_api_key': 'CHANG...nternal:54322/postgres'}, input_type=dict]
backend-api  |     For further information visit https://errors.pydantic.dev/2.8/v/missing
beat exited with code 0
worker exited with code 0
flower exited with code 0
notifier exited with code 0
^CGracefully stopping... (press Ctrl+C again to force)
[+] Stopping 7/7
 ✔ Container web          Stopped                                                                                             0.5s
 ✔ Container notifier     Stopped                                                                                             2.9s
 ✔ Container flower       Stopped                                                                                             2.7s
 ✔ Container backend-api  Stopped                                                                                             0.5s
 ✔ Container beat         Stopped                                                                                             4.0s
 ✔ Container worker       Stopped                                                                                             3.6s
 ✔ Container redis        Stopped                                                                                             0.5s
canceled

Twitter / LinkedIn details

No response

linear[bot] commented 6 days ago

CORE-200 [Bug]: windows11 wsl2 docker compose up failed

dosubot[bot] commented 6 days ago

@caishanli Hello! I'm here to help you with bugs, questions, and becoming a contributor. If you need any assistance, feel free to ask.

The docker compose up command failed to start the beat, worker, flower, notifier, and backend-api containers because the embedding_dim field is missing in the environment variables. This field is required for the BrainSettings model to initialize correctly.

To resolve this issue, ensure that the embedding_dim environment variable is set. Here are the required environment variables for the BrainSettings model:

Make sure all these variables are defined in your .env file or environment before running docker compose up again [1].

To continue talking to Dosu, mention @dosu.

caishanli commented 6 days ago

@caishanli Hello! I'm here to help you with bugs, questions, and becoming a contributor. If you need any assistance, feel free to ask.

The docker compose up command failed to start the beat, worker, flower, notifier, and backend-api containers because the embedding_dim field is missing in the environment variables. This field is required for the BrainSettings model to initialize correctly.

To resolve this issue, ensure that the embedding_dim environment variable is set. Here are the required environment variables for the BrainSettings model:

  • openai_api_key
  • azure_openai_embeddings_url
  • supabase_url
  • supabase_service_key
  • resend_api_key
  • resend_email_address
  • pg_database_url
  • pg_database_async_url
  • embedding_dim

Make sure all these variables are defined in your .env file or environment before running docker compose up again [1].

To continue talking to Dosu, mention @dosu.

.env file is copy from .env.example with nothing changed