Files
weiyu/deploy/docker/docker-compose.yaml

379 lines
15 KiB
YAML
Raw Normal View History

2025-01-15 17:13:35 +08:00
services:
2025-01-15 17:24:50 +08:00
bytedesk-mysql:
2025-01-15 17:13:35 +08:00
image: mysql:latest
container_name: mysql-bytedesk
environment:
2025-02-12 13:47:47 +08:00
MYSQL_DATABASE: bytedesk
2025-01-16 13:34:51 +08:00
MYSQL_ROOT_PASSWORD: r8FqfdbWUaN3
2025-01-15 17:13:35 +08:00
ports:
2025-02-06 12:02:40 +08:00
- "13306:3306"
2025-01-15 17:13:35 +08:00
volumes:
- mysql_data:/var/lib/mysql
2025-01-16 13:34:51 +08:00
networks:
- bytedesk-network
2025-04-27 09:28:05 +08:00
# healthcheck:
# test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$MYSQL_ROOT_PASSWORD"]
# interval: 10s
# timeout: 5s
# retries: 5
2025-01-15 17:13:35 +08:00
bytedesk-redis:
image: redis/redis-stack-server:latest
container_name: redis-bytedesk
ports:
2025-02-06 12:02:40 +08:00
- "16379:6379"
2025-01-15 17:45:28 +08:00
environment:
- REDIS_ARGS=--requirepass qfRxz3tVT8Nh
2025-01-15 17:13:35 +08:00
volumes:
- redis_data:/data
2025-01-16 13:34:51 +08:00
networks:
- bytedesk-network
# healthcheck:
# test: ["CMD", "redis-cli", "-a", "qfRxz3tVT8Nh", "ping"]
# interval: 10s
# timeout: 5s
# retries: 5
# ActiveMQ Artemis 消息队列
# http://localhost:18161/console使用 admin/admin 作为登录凭据
bytedesk-artemis:
image: apache/activemq-artemis:latest
container_name: artemis-bytedesk
environment:
- ARTEMIS_USER=admin
- ARTEMIS_PASSWORD=admin
- ANONYMOUS_LOGIN=false
- EXTRA_ARGS=--http-host 0.0.0.0 --relax-jolokia
ports:
- "16161:61616" # JMS
- "16162:61617" # AMQP
- "18161:8161" # Web Console
- "15672:5672" # AMQP
- "16163:61613" # STOMP
- "11883:1883" # MQTT
volumes:
- artemis_data:/var/lib/artemis/data
networks:
- bytedesk-network
healthcheck:
test: ["CMD", "curl", "--fail", "-u", "admin:admin", "http://localhost:8161/console/jolokia/"]
interval: 30s
timeout: 10s
retries: 5
2025-01-15 17:13:35 +08:00
2025-04-24 19:41:46 +08:00
# ElasticSearch 向量数据库
bytedesk-elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.18.0
container_name: elasticsearch-bytedesk
environment:
- node.name=bytedesk-es01
- cluster.name=bytedesk-es-cluster
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- xpack.security.enabled=true
- ELASTIC_PASSWORD=bytedesk123
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
ports:
- "19200:9200"
- "19300:9300"
networks:
- bytedesk-network
# healthcheck:
# test: ["CMD-SHELL", "curl -s -f http://localhost:9200/_cluster/health?wait_for_status=yellow || exit 1"]
# interval: 30s
# timeout: 10s
# retries: 5
2025-04-24 19:41:46 +08:00
2025-01-15 17:13:35 +08:00
bytedesk:
# image: bytedesk/bytedesk:latest # hub.docker.com enterprise
# image: bytedesk/bytedesk-ce:latest # hub.docker.com community
image: registry.cn-hangzhou.aliyuncs.com/bytedesk/bytedesk:latest # aliyun enterprise
2025-01-15 17:13:35 +08:00
# mage: registry.cn-hangzhou.aliyuncs.com/bytedesk/bytedesk-ce:latest # aliyun community
container_name: bytedesk
depends_on:
- bytedesk-mysql
- bytedesk-redis
- bytedesk-elasticsearch
- bytedesk-artemis
# bytedesk-mysql:
# condition: service_healthy
# bytedesk-redis:
# condition: service_healthy
# bytedesk-elasticsearch:
# condition: service_healthy
# bytedesk-artemis:
# condition: service_healthy
2025-01-15 17:13:35 +08:00
environment:
SERVER_PORT: 9003
2025-02-08 22:51:08 +08:00
# bytedesk config
BYTEDESK_DEBUG: true
2025-05-06 16:21:17 +08:00
BYTEDESK_EDITION: ENTERPRISE
2025-05-13 12:17:10 +08:00
BYTEDESK_VERSION: 0.7.8
2025-05-12 10:43:08 +08:00
BYTEDESK_APPKEY: ZjoyMDI1LTA2LTExOkNPTU1VTklUWTo6
# enable custom config: name, logo, description
BYTEDESK_CUSTOM_ENABLED: false
BYTEDESK_CUSTOM_NAME:
BYTEDESK_CUSTOM_LOGO:
BYTEDESK_CUSTOM_DESCRIPTION:
BYTEDESK_CUSTOM_SHOW_RIGHT_CORNER_CHAT: true
2025-03-14 20:57:49 +08:00
BYTEDESK_CUSTOM_PRIVACY_POLICY_URL:
BYTEDESK_CUSTOM_TERMS_OF_SERVICE_URL:
BYTEDESK_CUSTOM_LOGIN_USERNAME_ENABLE: true
BYTEDESK_CUSTOM_LOGIN_MOBILE_ENABLE: true
BYTEDESK_CUSTOM_LOGIN_EMAIL_ENABLE: false
BYTEDESK_CUSTOM_LOGIN_SCAN_ENABLE: true
BYTEDESK_CUSTOM_DOC_URL_SHOW: true
BYTEDESK_CUSTOM_DOC_URL: https://www.weiyuai.cn/docs/zh-CN/
2025-01-15 17:13:35 +08:00
# Admin config
BYTEDESK_ADMIN_EMAIL: admin@email.com
BYTEDESK_ADMIN_PASSWORD: admin
BYTEDESK_ADMIN_PASSWORD_DEFAULT: 123456
BYTEDESK_ADMIN_NICKNAME: SuperAdmin
BYTEDESK_ADMIN_MOBILE: 13345678000
BYTEDESK_ADMIN_MOBILE_WHITELIST: 18888888000,18888888001,18888888002,18888888003,18888888004,18888888005
BYTEDESK_ADMIN_EMAIL_WHITELIST: 100@email.com,101@email.com,102@email.com,103@email.com,104@email.com,105@email.com
BYTEDESK_ADMIN_VALIDATE_CODE: 123456
2025-02-07 14:38:32 +08:00
BYTEDESK_ADMIN_FORCE_VALIDATE_MOBILE: true
BYTEDESK_ADMIN_FORCE_VALIDATE_EMAIL: true
2025-01-15 17:13:35 +08:00
# Organization config
BYTEDESK_ORGANIZATION_NAME: MyCompany
BYTEDESK_ORGANIZATION_CODE: bytedesk
# Features config
BYTEDESK_FEATURES_JAVA_AI: false
BYTEDESK_FEATURES_PYTHON_AI: true
BYTEDESK_FEATURES_EMAIL_TYPE: javamail
BYTEDESK_FEATURES_ENABLE_REGISTRATION: false
2025-02-08 22:51:08 +08:00
BYTEDESK_FEATURES_AVATAR_BASE_URL:
2025-01-15 17:13:35 +08:00
# CORS config
# BYTEDESK_CORS_ALLOWED_ORIGINS: *
# JWT config
BYTEDESK_JWT_SECRET_KEY: 1dfaf8d004207b628a9a6b859c429f49a9a7ead9fd8161c1e60847aeef06dbd2
BYTEDESK_JWT_EXPIRATION: 2592000000
BYTEDESK_JWT_REFRESH_TOKEN_EXPIRATION: 5184000000
2025-05-06 16:21:17 +08:00
# db config
SPRING_DATASOURCE_URL: jdbc:mysql://mysql-bytedesk:3306/bytedesk?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: r8FqfdbWUaN3
SPRING_JPA_HIBERNATE_DDL_AUTO: update
# redis config
SPRING_DATA_REDIS_HOST: redis-bytedesk
SPRING_DATA_REDIS_PORT: 6379
SPRING_DATA_REDIS_PASSWORD: qfRxz3tVT8Nh
SPRING_DATA_REDIS_DATABASE: 0
2025-01-15 17:13:35 +08:00
# Cache config
BYTEDESK_CACHE_LEVEL: 0
BYTEDESK_CACHE_PREFIX: bytedeskim
BYTEDESK_CACHE_REDIS_STREAM_KEY: bytedeskim:stream
# Upload config
BYTEDESK_UPLOAD_TYPE: local
BYTEDESK_UPLOAD_DIR: /app/uploads
2025-02-15 11:59:48 +08:00
# 上传文件的访问地址,请修改为服务器实际的地址
BYTEDESK_UPLOAD_URL: http://127.0.0.1:9003
2025-01-15 17:13:35 +08:00
# Knowledge base config
BYTEDESK_KBASE_THEME: default
BYTEDESK_KBASE_HTML_PATH: helpcenter
2025-02-15 11:59:48 +08:00
# 知识库的访问地址,请修改为服务器实际的地址
2025-01-15 17:13:35 +08:00
BYTEDESK_KBASE_API_URL: http://127.0.0.1:9003
# Socket config
BYTEDESK_SOCKET_HOST: 0.0.0.0
BYTEDESK_SOCKET_WEBSOCKET_PORT: 9885
BYTEDESK_SOCKET_LEAK_DETECTOR_LEVEL: SIMPLE
BYTEDESK_SOCKET_PARENT_EVENT_LOOP_GROUP_THREAD_COUNT: 1
BYTEDESK_SOCKET_CHILD_EVENT_LOOP_GROUP_THREAD_COUNT: 8
BYTEDESK_SOCKET_MAX_PAYLOAD_SIZE: 10240
# Cluster config
BYTEDESK_CLUSTER_ENABLED: false
# Push config
2025-01-15 17:24:50 +08:00
# BYTEDESK_PUSH_APNS_BUNDLE_ID: com.kefux.im
# BYTEDESK_PUSH_APNS_P12_URL: 123.p12
# BYTEDESK_PUSH_APNS_P12_PASSWORD: 123456
2025-02-28 07:39:30 +08:00
# druid
SPRING_DATASOURCE_DRUID_STAT_VIEW_SERVLET_LOGIN_USERNAME: admin@email.com
SPRING_DATASOURCE_DRUID_STAT_VIEW_SERVLET_LOGIN_PASSWORD: admin
2025-01-24 15:21:44 +08:00
# Actuator security configuration
2025-01-24 12:16:21 +08:00
MANAGEMENT_ENDPOINTS_ENABLED_BY_DEFAULT: false
2025-01-24 15:21:44 +08:00
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: ''
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_EXCLUDE: '*'
2025-01-24 12:16:21 +08:00
MANAGEMENT_ENDPOINT_HEALTH_ENABLED: false
MANAGEMENT_ENDPOINT_INFO_ENABLED: false
2025-01-24 15:21:44 +08:00
MANAGEMENT_SERVER_PORT: -1
MANAGEMENT_ENDPOINTS_WEB_BASE_PATH: '/management'
SPRING_SECURITY_BASIC_ENABLED: true
2025-02-08 22:51:08 +08:00
# ai config
2025-02-13 18:21:10 +08:00
# ollama
2025-05-01 11:39:04 +08:00
# ollama pull qwen3:0.6b
2025-04-21 16:22:06 +08:00
# ollama pull bge-m3:latest
2025-02-11 15:51:08 +08:00
SPRING_AI_OLLAMA_BASE_URL: http://host.docker.internal:11434
2025-04-16 09:38:26 +08:00
SPRING_AI_OLLAMA_CHAT_ENABLED: true
2025-05-01 11:39:04 +08:00
SPRING_AI_OLLAMA_CHAT_OPTIONS_MODEL: qwen3:0.6b
SPRING_AI_OLLAMA_CHAT_OPTIONS_TEMPERATURE: 0.7
2025-04-16 09:38:26 +08:00
SPRING_AI_OLLAMA_EMBEDDING_ENABLED: true
2025-04-22 19:44:28 +08:00
# 如果主要处理中文内容推荐使用BGE模型在中文语义理解上表现更好
# https://huggingface.co/BAAI/bge-m3: Dimension: 1024, Sequence Length: 8192
2025-04-21 16:22:06 +08:00
SPRING_AI_OLLAMA_EMBEDDING_OPTIONS_MODEL: bge-m3:latest
2025-04-22 19:44:28 +08:00
# https://docs.spring.io/spring-ai/reference/api/chat/ollama-chat.html#auto-pulling-models
# always/when_missing/never
SPRING_AI_OLLAMA_INIT_PULL_MODEL_STRATEGY: when_missing
2025-04-19 15:05:05 +08:00
# zhipuai
# 申请智谱AI API Keyhttps://www.bigmodel.cn/usercenter/proj-mgmt/apikeys
SPRING_AI_ZHIPUAI_API_KEY: 'sk-xxx'
SPRING_AI_ZHIPUAI_CHAT_ENABLED: false
SPRING_AI_ZHIPUAI_CHAT_OPTIONS_MODEL: glm-4-flash
SPRING_AI_ZHIPUAI_CHAT_OPTIONS_TEMPERATURE: 0.7
SPRING_AI_ZHIPUAI_EMBEDDING_ENABLED: false
2025-02-25 07:32:59 +08:00
# deepseek
# 申请key https://api-docs.deepseek.com/zh-cn/
2025-02-25 07:32:59 +08:00
SPRING_AI_DEEPSEEK_BASE_URL: https://api.deepseek.com
SPRING_AI_DEEPSEEK_API_KEY: 'sk-xxx'
2025-02-25 07:32:59 +08:00
SPRING_AI_DEEPSEEK_CHAT_ENABLED: false
2025-02-28 22:09:56 +08:00
# deepseek-reasoner or deepseek-chat
2025-02-25 07:32:59 +08:00
SPRING_AI_DEEPSEEK_CHAT_OPTIONS_MODEL: deepseek-chat
SPRING_AI_DEEPSEEK_CHAT_OPTIONS_TEMPERATURE: 0.7
SPRING_AI_DEEPSEEK_EMBEDDING_ENABLED: false
# openai
# https://docs.spring.io/spring-ai/reference/api/chat/openai-chat.html
SPRING_AI_OPENAI_BASE_URL: https://api.openai.com
SPRING_AI_OPENAI_API_KEY: 'sk-xxx'
SPRING_AI_OPENAI_CHAT_ENABLED: false
2025-02-25 07:32:59 +08:00
SPRING_AI_OPENAI_CHAT_OPTIONS_MODEL: gpt-4o
# SPRING_AI_OPENAI_CHAT_OPTIONS_MODEL: gpt-4o-mini
2025-02-13 18:21:10 +08:00
SPRING_AI_OPENAI_CHAT_OPTIONS_TEMPERATURE: 0.7
SPRING_AI_OPENAI_EMBEDDING_ENABLED: false
# alibaba
# 阿里云百炼大模型获取api key
# https://bailian.console.aliyun.com/?apiKey=1#/api-key
# 阿里云百炼大模型模型列表:
# https://bailian.console.aliyun.com/?spm=a2c4g.11186623.0.0.11c67980m5X2VR#/model-market
2025-02-24 22:41:21 +08:00
SPRING_AI_DASHSCOPE_API_KEY: 'sk-xxx'
2025-02-23 23:32:17 +08:00
SPRING_AI_DASHSCOPE_CHAT_ENABLED: false
SPRING_AI_DASHSCOPE_CHAT_OPTIONS_MODEL: deepseek-r1
SPRING_AI_DASHSCOPE_CHAT_OPTIONS_TEMPERATURE: 0.7
2025-02-24 15:09:43 +08:00
SPRING_AI_DASHSCOPE_AUDIO_TRANSCRIPTION_ENABLED: false
SPRING_AI_DASHSCOPE_IMAGE_ENABLED: false
SPRING_AI_DASHSCOPE_EMBEDDING_ENABLED: false
SPRING_AI_DASHSCOPE_AUDIO_SYNTHESIS_ENABLED: false
2025-02-24 22:41:21 +08:00
SPRING_AI_NACOS_PROMPT_TEMPLATE_ENABLED: false
2025-03-19 16:45:34 +08:00
# siliconflow
# https://siliconflow.com/
# https://docs.spring.io/spring-ai/reference/api/chat/siliconflow-chat.html
SPRING_AI_SILICONFLOW_BASE_URL: https://api.siliconflow.cn
SPRING_AI_SILICONFLOW_API_KEY: 'sk-xxx'
SPRING_AI_SILICONFLOW_CHAT_ENABLED: false
SPRING_AI_SILICONFLOW_CHAT_OPTIONS_MODEL: Qwen/QwQ-32B
SPRING_AI_SILICONFLOW_CHAT_OPTIONS_TEMPERATURE: 0.7
2025-03-22 08:00:40 +08:00
# gitee
# https://ai.gitee.com/
# https://ai.gitee.com/docs/best-practice/integration
SPRING_AI_GITEE_BASE_URL: https://ai.gitee.com
SPRING_AI_GITEE_API_KEY: 'sk-xxx'
SPRING_AI_GITEE_CHAT_ENABLED: false
SPRING_AI_GITEE_CHAT_OPTIONS_MODEL: Qwen/QwQ-32B
SPRING_AI_GITEE_CHAT_OPTIONS_TEMPERATURE: 0.7
2025-04-12 10:33:54 +08:00
# tencent
# https://console.cloud.tencent.com/hunyuan/start#
# https://cloud.tencent.com/document/product/1729/111007
SPRING_AI_TENCENT_BASE_URL: https://api.hunyuan.cloud.tencent.com
SPRING_AI_TENCENT_API_KEY: 'sk-xxx'
SPRING_AI_TENCENT_CHAT_ENABLED: false
SPRING_AI_TENCENT_CHAT_OPTIONS_MODEL: hunyuan-t1-latest
SPRING_AI_TENCENT_CHAT_OPTIONS_TEMPERATURE: 0.7
# baidu
# https://console.bce.baidu.com/iam/#/iam/apikey/list
# https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Fm2vrveyu
SPRING_AI_BAIDU_BASE_URL: https://qianfan.baidubce.com/v2
# model builder可用
SPRING_AI_BAIDU_API_KEY: 'bce-v3/xxx'
SPRING_AI_BAIDU_CHAT_ENABLED: false
SPRING_AI_BAIDU_CHAT_OPTIONS_MODEL: ernie-x1-32k-preview
SPRING_AI_BAIDU_CHAT_OPTIONS_TEMPERATURE: 0.7
# volcengine 火山引擎
# api key: https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D
# https://www.volcengine.com/docs/82379/1330626
SPRING_AI_VOLCENGINE_BASE_URL: https://ark.cn-beijing.volces.com/api/v3
SPRING_AI_VOLCENGINE_API_KEY: 'sk-xxx'
SPRING_AI_VOLCENGINE_CHAT_ENABLED: false
SPRING_AI_VOLCENGINE_CHAT_OPTIONS_MODEL: doubao-1-5-pro-32k-250115
SPRING_AI_VOLCENGINE_CHAT_OPTIONS_TEMPERATURE: 0.7
2025-02-15 11:29:41 +08:00
# vector store
SPRING_AI_VECTORSTORE_REDIS_INITIALIZE_SCHEMA: true
2025-02-20 09:01:00 +08:00
# SPRING_AI_VECTORSTORE_REDIS_URI: redis://:qfRxz3tVT8Nh@redis-bytedesk:6379
SPRING_AI_VECTORSTORE_REDIS_INDEX_NAME: bytedesk_vs_index
# SPRING_AI_VECTORSTORE_REDIS_PREFIX: bytedesk_vs_prefix:
2025-04-24 20:11:54 +08:00
# elasticsearch
# 浏览器可视化插件管理 es-client: https://gitee.com/q2316367743/es-client
# 配置参数 https://docs.spring.io/spring-ai/reference/api/vectordbs/elasticsearch.html#elasticsearchvector-properties
SPRING_ELASTICSEARCH_URIS: http://elasticsearch-bytedesk:9200
SPRING_ELASTICSEARCH_USERNAME: elastic
SPRING_ELASTICSEARCH_PASSWORD: bytedesk123
SPRING_AI_VECTORSTORE_ELASTICSEARCH_ENABLED: true
SPRING_AI_VECTORSTORE_ELASTICSEARCH_INITIALIZE_SCHEMA: true
SPRING_AI_VECTORSTORE_ELASTICSEARCH_INDEX_NAME: bytedesk_vs_index
2025-05-07 16:53:53 +08:00
SPRING_AI_VECTORSTORE_ELASTICSEARCH_DIMENSIONS: 1024
2025-04-24 20:11:54 +08:00
# cosine/l2_norm/dot_product
SPRING_AI_VECTORSTORE_ELASTICSEARCH_SIMILARITY: cosine
2025-02-23 23:32:17 +08:00
# mcp
SPRING_AI_MCP_CLIENT_ENABLED: false
SPRING_AI_MCP_SERVER_ENABLED: false
2025-02-25 09:04:03 +08:00
SPRING_AI_MCP_SERVER_STDIO: false
SPRING_AI_MCP_SERVER_TYPE: SYNC
2025-02-24 14:44:11 +08:00
# weaviate
2025-05-08 16:08:27 +08:00
SPRING_AI_VECTORSTORE_WEAVIATE_ENABLED: false
2025-02-24 14:55:23 +08:00
# SPRING_MAIN_ALLOW_BEAN_DEFINITION_OVERRIDING: true
2025-02-09 23:00:08 +08:00
# wechat config
WECHAT_PAY_ENABLED: false
2025-03-12 13:57:59 +08:00
# 阿里云短信服务的签名可以在控制台找到如是中文请转为Unicode
ALIYUN_SMS_SIGNNAME: ''
#阿里云短信服务的模板Code可以在控制台找到
ALIYUN_SMS_TEMPLATECODE: ''
2025-02-23 23:32:17 +08:00
# springdoc
SPRINGDOC_SHOW_ACTUATOR: false
# swagger-ui
# http://服务器ip:9003/swagger-ui/index.html
SPRINGDOC_SWAGGER_UI_ENABLED: true
SPRINGDOC_SWAGGER_UI_PATH: /index.html
# api-docs
SPRINGDOC_API_DOCS_ENABLED: true
SPRINGDOC_API_DOCS_PATH: /v3/api-docs
# knife4j
# http://服务器ip:9003/doc.html
KNIFE4J_ENABLED: true
KNIFE4J_SETTING_LANGUAGE: zh_cn
2025-04-17 10:50:47 +08:00
# 增加数据库连接超时时间
SPRING_DATASOURCE_HIKARI_CONNECTION_TIMEOUT: 60000
SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE: 10
2025-01-15 17:13:35 +08:00
ports:
- 9003:9003
2025-01-15 17:45:28 +08:00
- 9885:9885
2025-01-15 17:13:35 +08:00
volumes:
- upload_data:/app/uploads
2025-01-16 13:34:51 +08:00
networks:
- bytedesk-network
2025-01-15 17:13:35 +08:00
volumes:
mysql_data:
2025-04-24 19:41:46 +08:00
name: bytedesk_mysql_data
2025-01-15 17:13:35 +08:00
redis_data:
2025-04-24 19:41:46 +08:00
name: bytedesk_redis_data
elasticsearch_data:
name: bytedesk_elasticsearch_data
2025-01-16 13:34:51 +08:00
upload_data:
2025-04-24 20:11:54 +08:00
name: bytedesk_upload_data
artemis_data:
name: bytedesk_artemis_data
2025-01-16 13:34:51 +08:00
networks:
bytedesk-network:
driver: bridge