Error Details
2025-12-10 08:04:25.265 INFO [Thread-38 (process_request_thread)] [_internal.py:97] - 192.168.128.11 - - [10/Dec/2025 08:04:25] "GET /console/api/workspaces/current/models/model-types/llm HTTP/1.1" 200 -
api-1 | 2025-12-10 08:04:29.968 WARNING [Thread-44 (process_request_thread)] [connection.py:669] - No hostname was supplied. Reverting to default 'localhost'
api-1 | 2025-12-10 08:04:30.593 ERROR [Thread-44 (process_request_thread)] [app.py:875] - Exception on /console/api/account/change-email [POST]
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/utils/functional.py", line 32, in __call__
api-1 | return self.__value__
api-1 | ^^^^^^^^^^^^^^
api-1 | AttributeError: 'ChannelPromise' object has no attribute '__value__'. Did you mean: '__call__'?
api-1 |
api-1 | During handling of the above exception, another exception occurred:
api-1 |
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/transport/virtual/base.py", line 951, in create_channel
api-1 | return self._avail_channels.pop()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | IndexError: pop from empty list
api-1 |
api-1 | During handling of the above exception, another exception occurred:
api-1 |
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 385, in connect_check_health
api-1 | sock = self.retry.call_with_retry(
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/retry.py", line 87, in call_with_retry
api-1 | return do()
api-1 | ^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 386, in
```<lambda>
api-1 | lambda: self._connect(), lambda error: self.disconnect(error)
api-1 | ^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 797, in _connect
api-1 | raise err
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 781, in _connect
api-1 | sock.connect(socket_address)
api-1 | ConnectionRefusedError: [Errno 111] Connection refused
api-1 |
api-1 | During handling of the above exception, another exception occurred:
api-1 |
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 472, in _reraise_as_library_errors
api-1 | yield
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 459, in _ensure_connection
api-1 | return retry_over_time(
api-1 | ^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/utils/functional.py", line 318, in retry_over_time
api-1 | return fun(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 938, in _connection_factory
api-1 | self._connection = self._establish_connection()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 860, in _establish_connection
api-1 | conn = self.transport.establish_connection()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/transport/virtual/base.py", line 975, in establish_connection
api-1 | self._avail_channels.append(self.create_channel(self))
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/transport/virtual/base.py", line 953, in create_channel
api-1 | channel = self.Channel(connection)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/transport/redis.py", line 751, in __init__
api-1 | self.client.ping()
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/commands/core.py", line 1219, in ping
api-1 | return self.execute_command("PING", **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/client.py", line 624, in execute_command
api-1 | return self._execute_command(*args, **options)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/client.py", line 630, in _execute_command
api-1 | conn = self.connection or pool.get_connection()
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/utils.py", line 188, in wrapper
api-1 | return func(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 1530, in get_connection
api-1 | connection.connect()
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 379, in connect
api-1 | self.connect_check_health(check_health=True)
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 391, in connect_check_health
api-1 | raise ConnectionError(self._error_message(e))
api-1 | redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.
api-1 |
api-1 | The above exception was the direct cause of the following exception:
api-1 |
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
api-1 | rv = self.dispatch_request()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
api-1 | return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/api.py", line 404, in wrapper
api-1 | resp = resource(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/views.py", line 110, in view
api-1 | return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return]
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
api-1 | resp = meth(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 268, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 220, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/libs/login.py", line 80, in decorated_view
api-1 | return current_app.ensure_sync(func)(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 37, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/workspace/account.py", line 504, in post
api-1 | token = AccountService.send_change_email_email(
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/services/account_service.py", line 535, in send_change_email_email
api-1 | send_change_mail_task.delay(
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/celery/app/task.py", line 444, in delay
api-1 | return self.apply_async(args, kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/celery/app/task.py", line 601, in apply_async
api-1 | return app.send_task(
api-1 | ^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/celery/app/base.py", line 930, in send_task
api-1 | amqp.send_task_message(P, name, message, **options)
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/celery/app/amqp.py", line 523, in send_task_message
api-1 | ret = producer.publish(
api-1 | ^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/messaging.py", line 190, in publish
api-1 | return _publish(
api-1 | ^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 556, in _ensured
api-1 | return fun(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/messaging.py", line 200, in _publish
api-1 | channel = self.channel
api-1 | ^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/messaging.py", line 224, in _get_channel
api-1 | channel = self._channel = channel()
api-1 | ^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/utils/functional.py", line 34, in __call__
api-1 | value = self.__value__ = self.__contract__()
api-1 | ^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/messaging.py", line 240, in <lambda>
api-1 | channel = ChannelPromise(lambda: connection.default_channel)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 957, in default_channel
api-1 | self._ensure_connection(**conn_opts)
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 458, in _ensure_connection
api-1 | with ctx():
api-1 | ^^^^^
api-1 | File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
api-1 | self.gen.throw(value)
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 476, in _reraise_as_library_errors
api-1 | raise ConnectionError(str(exc)) from exc
api-1 | kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. Connection refused.
api-1 | 2025-12-10 08:04:30.610 ERROR [Thread-44 (process_request_thread)] [app.py:875] - Exception on /console/api/account/change-email [POST]
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/utils/functional.py", line 32, in __call__
api-1 | return self.__value__
api-1 | ^^^^^^^^^^^^^^
api-1 | AttributeError: 'ChannelPromise' object has no attribute '__value__'. Did you mean: '__call__'?
api-1 |
api-1 | During handling of the above exception, another exception occurred:
api-1 |
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/transport/virtual/base.py", line 951, in create_channel
api-1 | return self._avail_channels.pop()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | IndexError: pop from empty list
api-1 |
api-1 | During handling of the above exception, another exception occurred:
api-1 |
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 385, in connect_check_health
api-1 | sock = self.retry.call_with_retry(
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/retry.py", line 87, in call_with_retry
api-1 | return do()
api-1 | ^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 386, in <lambda>
api-1 | lambda: self._connect(), lambda error: self.disconnect(error)
api-1 | ^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 797, in _connect
api-1 | raise err
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 781, in _connect
api-1 | sock.connect(socket_address)
api-1 | ConnectionRefusedError: [Errno 111] Connection refused
api-1 |
api-1 | During handling of the above exception, another exception occurred:
api-1 |
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 472, in _reraise_as_library_errors
api-1 | yield
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 459, in _ensure_connection
api-1 | return retry_over_time(
api-1 | ^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/utils/functional.py", line 318, in retry_over_time
api-1 | return fun(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 938, in _connection_factory
api-1 | self._connection = self._establish_connection()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 860, in _establish_connection
api-1 | conn = self.transport.establish_connection()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/transport/virtual/base.py", line 975, in establish_connection
api-1 | self._avail_channels.append(self.create_channel(self))
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/transport/virtual/base.py", line 953, in create_channel
api-1 | channel = self.Channel(connection)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/transport/redis.py", line 751, in __init__
api-1 | self.client.ping()
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/commands/core.py", line 1219, in ping
api-1 | return self.execute_command("PING", **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/client.py", line 624, in execute_command
api-1 | return self._execute_command(*args, **options)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/client.py", line 630, in _execute_command
api-1 | conn = self.connection or pool.get_connection()
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/utils.py", line 188, in wrapper
api-1 | return func(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 1530, in get_connection
api-1 | connection.connect()
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 379, in connect
api-1 | self.connect_check_health(check_health=True)
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 391, in connect_check_health
api-1 | raise ConnectionError(self._error_message(e))
api-1 | redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.
api-1 |
api-1 | The above exception was the direct cause of the following exception:
api-1 |
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
api-1 | rv = self.dispatch_request()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
api-1 | return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/api.py", line 404, in wrapper
api-1 | resp = resource(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/views.py", line 110, in view
api-1 | return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return]
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restx/resource.py", line 41, in dispatch_request
api-1 | resp = meth(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 268, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 220, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/libs/login.py", line 80, in decorated_view
api-1 | return current_app.ensure_sync(func)(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/wraps.py", line 37, in decorated
api-1 | return view(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/controllers/console/workspace/account.py", line 504, in post
api-1 | token = AccountService.send_change_email_email(
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/services/account_service.py", line 535, in send_change_email_email
api-1 | send_change_mail_task.delay(
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/celery/app/task.py", line 444, in delay
api-1 | return self.apply_async(args, kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/celery/app/task.py", line 601, in apply_async
api-1 | return app.send_task(
api-1 | ^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/celery/app/base.py", line 930, in send_task
api-1 | amqp.send_task_message(P, name, message, **options)
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/celery/app/amqp.py", line 523, in send_task_message
api-1 | ret = producer.publish(
api-1 | ^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/messaging.py", line 190, in publish
api-1 | return _publish(
api-1 | ^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 556, in _ensured
api-1 | return fun(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/messaging.py", line 200, in _publish
api-1 | channel = self.channel
api-1 | ^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/messaging.py", line 224, in _get_channel
api-1 | channel = self._channel = channel()
api-1 | ^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/utils/functional.py", line 34, in __call__
api-1 | value = self.__value__ = self.__contract__()
api-1 | ^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/messaging.py", line 240, in <lambda>
api-1 | channel = ChannelPromise(lambda: connection.default_channel)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 957, in default_channel
api-1 | self._ensure_connection(**conn_opts)
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 458, in _ensure_connection
api-1 | with ctx():
api-1 | ^^^^^
api-1 | File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
api-1 | self.gen.throw(value)
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/kombu/connection.py", line 476, in _reraise_as_library_errors
api-1 | raise ConnectionError(str(exc)) from exc
api-1 | kombu.exceptions.OperationalError: Error 111 connecting to localhost:6379. Connection refused.
api-1 | 2025-12-10 08:04:30.616 INFO [Thread-44 (process_request_thread)] [_internal.py:97] - 192.168.128.11 - - [10/Dec/2025 08:04:30] "POST /console/api/account/change-email HTTP/1.1" 500 -

Redis Configuration
Redis Configuration
This Redis configuration is used for caching and for pub/sub during conversation.
------------------------------
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_USERNAME=
REDIS_PASSWORD=
REDIS_USE_SSL=false
SSL configuration for Redis (when REDIS_USE_SSL=true)
REDIS_SSL_CERT_REQS=CERT_NONE
Options: CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
REDIS_SSL_CA_CERTS=
Path to CA certificate file for SSL verification
REDIS_SSL_CERTFILE=
Path to client certificate file for SSL authentication
REDIS_SSL_KEYFILE=
Path to client private key file for SSL authentication
REDIS_DB=0
Whether to use Redis Sentinel mode.
If set to true, the application will automatically discover and connect to the master node through Sentinel.
REDIS_USE_SENTINEL=false
List of Redis Sentinel nodes. If Sentinel mode is enabled, provide at least one Sentinel IP and port.
Format: <sentinel1_ip>:<sentinel1_port>,<sentinel2_ip>:<sentinel2_port>,<sentinel3_ip>:<sentinel3_port>
REDIS_SENTINELS=
REDIS_SENTINEL_SERVICE_NAME=
REDIS_SENTINEL_USERNAME=
REDIS_SENTINEL_PASSWORD=
REDIS_SENTINEL_SOCKET_TIMEOUT=0.1
List of Redis Cluster nodes. If Cluster mode is enabled, provide at least one Cluster IP and port.
Format: <Cluster1_ip>:<Cluster1_port>,<Cluster2_ip>:<Cluster2_port>,<Cluster3_ip>:<Cluster3_port>
REDIS_USE_CLUSTERS=false
REDIS_CLUSTERS=
REDIS_CLUSTERS_PASSWORD=
Docker Compose Content (Main)
services:
API service
api:
image: docker.1ms.run/langgenius/dify-api:1.10.1-fix.1
restart: always
#user: “root:root”
deploy:
resources:
limits:
memory: 1024M
cpus: ‘1’
environment:
# Use the shared environment variables.
<<: *shared-api-worker-env
# Startup mode, ‘api’ starts the API server.
MODE: api
SENTRY_DSN: ${API_SENTRY_DSN:-}
SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0}
SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0}
PLUGIN_REMOTE_INSTALL_HOST: ${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost}
PLUGIN_REMOTE_INSTALL_PORT: ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}
PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}
INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1}
depends_on:
db_postgres:
condition: service_healthy
required: false
db_mysql:
condition: service_healthy
required: false
oceanbase:
condition: service_healthy
required: false
seekdb:
condition: service_healthy
required: false
redis:
condition: service_started
volumes:
# Mount the storage directory to the container, for storing user files.
- ./volumes/app/storage:/app/api/storage:rw
networks:
- ssrf_proxy_network
- default
The redis cache.
redis:
image: docker.1ms.run/redis:6-alpine
deploy:
resources:
limits:
memory: 128M
cpus: ‘0.25’
restart: always
ports:
- “16379:6379”
environment:
REDISCLI_AUTH: ${REDIS_PASSWORD:-X5t9!@#QwE123R4}
volumes:
# Mount the redis data directory to the container.
- ./volumes/redis/data:/data
# Set the redis password when startup redis server.
command: redis-server --requirepass ${REDIS_PASSWORD:-X5t9!@#QwE123R4}
healthcheck:
test:
[
“CMD-SHELL”,
“redis-cli -a ${REDIS_PASSWORD:-X5t9!@#QwE123R4} ping | grep -q PONG”,
]