# local-docker-dev **Repository Path**: wuxueshi/local-docker-dev ## Basic Information - **Project Name**: local-docker-dev - **Description**: windows本地开发使用docker环境,使mysql以及redis作为多个项目共同使用的服务。提供服务的compose.yml文件,拿来即用,无心智负担。 - **Primary Language**: Docker - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/wuxueshi - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-26 - **Last Updated**: 2026-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # local-docker-dev #### 介绍 windows本地开发使用docker环境,使mysql以及redis作为多个项目共同使用的服务,避免重复创建容器 #### 软件架构 - docker-desktop 4.24.2 - mysql:8.0 - redis:7.0.4 - elasticsearch:8.11.0 - kibana:8.11.0 - milvus:v2.4.15(向量数据库,单机模式) #### 安装教程 1. 安装docker 2. cd 本项目更目录 3. 执行 `docker compose up -d` 4. Finish #### 使用说明 1. 查找当前网络网关,命令行执行 `docker inspect common-redis`,找到下图标记的位置,`172.22.0.1` 就是连接MySql和Redis的Host了。 - MySql默认密码:`123456`, 端口: `13306` - Redis默认密码:`123456`, 端口: `16379` - Elasticsearch HTTP 地址:`http://localhost:19200`,用户名:`elastic`,密码:`dev123456` - Kibana 管理界面地址:`http://localhost:15601`,登录用户名:`elastic`,密码:`dev123456` - Milvus API 地址:`http://localhost:19530`,gRPC 端口,客户端连接用 ![输入图片说明](image.png) 2. 自己的docker项目networks修改为`dev_net` #### Milvus 向量数据库常用操作示例 ##### 1. 检查 Milvus 服务状态 ```bash curl http://localhost:19530/health ``` ##### 2. 使用 Python SDK 进行向量操作 ```python # pip install pymilvus from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType, utility # 连接 Milvus connections.connect( alias="default", host="localhost", port="19530" ) # 定义集合结构 fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128), FieldSchema(name="content", dtype=DataType.VARCHAR, max_length=500) ] schema = CollectionSchema(fields=fields, description="向量搜索示例集合") collection = Collection(name="my_vectors", schema=schema) # 插入向量数据 import random embeddings = [[random.random() for _ in range(128)] for _ in range(10)] entities = [embeddings, ["内容1", "内容2", "内容3", "内容4", "内容5", "内容6", "内容7", "内容8", "内容9", "内容10"]] collection.insert(entities) collection.flush() # 搜索相似向量 search_params = {"metric_type": "L2", "params": {"nprobe": 10}} results = collection.search( data=[embeddings[0]], anns_field="embedding", param=search_params, limit=5, output_fields=["content"] ) print(results) ``` ##### 3. Milvus 连接示例(Python SDK) ```python # pip install pymilvus from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType, utility # 连接 Milvus connections.connect( alias="default", host="localhost", port="19530" ) # 定义集合结构 fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128), FieldSchema(name="content", dtype=DataType.VARCHAR, max_length=500) ] schema = CollectionSchema(fields=fields, description="向量搜索示例集合") collection = Collection(name="my_vectors", schema=schema) # 插入向量数据 import random embeddings = [[random.random() for _ in range(128)] for _ in range(10)] entities = [embeddings, ["内容1", "内容2", "内容3", "内容4", "内容5", "内容6", "内容7", "内容8", "内容9", "内容10"]] collection.insert(entities) collection.flush() # 搜索相似向量 search_params = {"metric_type": "L2", "params": {"nprobe": 10}} results = collection.search( data=[embeddings[0]], anns_field="embedding", param=search_params, limit=5, output_fields=["content"] ) print(results) ``` ##### 4. PHP/Laravel 项目集成示例 ```php // 需要通过 gRPC 调用 Milvus // 推荐使用第三方封装库或自行封装 gRPC 客户端 $milvusHost = "172.22.0.1"; $milvusPort = "19530"; // 使用 curl 调用 Milvus REST API $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://{$milvusHost}:{$milvusPort}/health"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); ``` #### Elasticsearch 常用操作示例 ##### 1. 查看集群健康状态 ```bash curl -u elastic:dev123456 http://localhost:19200/_cluster/health?pretty ``` ##### 2. 创建索引 ```bash curl -u elastic:dev123456 -X PUT "http://localhost:19200/my_index" \ -H "Content-Type: application/json" \ -d '{"settings":{"number_of_shards":1,"number_of_replicas":0}}' ``` ##### 3. 插入文档 ```bash curl -u elastic:dev123456 -X POST "http://localhost:19200/my_index/_doc/1" \ -H "Content-Type: application/json" \ -d '{"title":"Hello Elasticsearch","content":"这是第一条ES数据"}' ``` ##### 4. 搜索文档 ```bash curl -u elastic:dev123456 -X GET "http://localhost:19200/my_index/_search?pretty" \ -H "Content-Type: application/json" \ -d '{"query":{"match":{"title":"Hello"}}}' ``` ##### 5. PHP/Laravel 项目集成示例 ```php // composer require elasticsearch/elasticsearch use Elasticsearch\ClientBuilder; $client = ClientBuilder::create() ->setHosts(['http://172.22.0.1:19200']) // 使用网关地址 ->setBasicAuthentication('elastic', 'dev123456') ->build(); $response = $client->search([ 'index' => 'articles', 'body' => [ 'query' => [ 'multi_match' => [ 'query' => 'Laravel', 'fields' => ['title^2', 'content'] ] ] ] ]); ``` ##### 6. Kibana Dev Tools 直接查询(浏览器访问 http://localhost:15601) ``` GET /my_index/_search { "query": { "match": { "title": "Hello" } } } ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request