
1. eShop本地运行环境准备作为电商系统开发者的标配工具eShop的本地化部署能极大提升开发调试效率。不同于直接操作线上环境本地运行可以自由测试支付回调、订单状态修改等敏感操作还能避免多人协作时的环境冲突问题。我经手过三个不同技术栈的eShop项目发现.NET Core版本在Windows环境下的兼容性最佳。以下是经过验证的环境配置清单硬件要求4核CPU/8GB内存/50GB SSD低于此配置运行调试工具时易卡顿必备组件Visual Studio 2022 Community Edition版本17.4.NET 6.0 SDKDocker Desktop用于容器化数据库SQL Server 2019 Developer Edition可选工具PostmanAPI调试Redis Desktop Manager缓存管理Azure Storage Emulator云存储模拟重要提示安装Docker时务必启用WSL2后端传统Hyper-V模式会导致端口映射异常。我在三个不同版本的Win10上测试发现19045.3803以上版本的系统兼容性最佳。2. 源码获取与工程结构解析官方推荐通过Git克隆仓库获取最新代码git clone https://github.com/dotnet-architecture/eShopOnContainers.git工程采用微服务架构主要包含以下关键目录├── src │ ├── Services │ │ ├── Basket购物车服务 │ │ ├── Catalog商品服务 │ │ └── Ordering订单服务 │ └── Web │ └── WebMVC前端入口 ├── docker-compose.yml容器编排文件 └── env环境变量配置2.1 配置项修改要点首次运行前需要调整三个核心配置docker-compose.yml中的端口映射避免与本地已有服务冲突WebMVC/appsettings.json的IdentityUrl身份认证地址env/nginx-conf/nginx.conf的服务器名称我建议使用VSCode的Multi-root Workspace功能同时编辑这些文件比逐个打开效率提升50%以上。3. 容器化启动全流程3.1 数据库服务初始化docker-compose -f docker-compose.yml up -d mssql redis rabbitmq这条命令会启动SQL Server容器端口1433Redis缓存容器端口6379RabbitMQ消息队列端口5672踩坑记录首次启动SQL容器时若报SA密码不符合策略需进入容器执行docker exec -it eshop-mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P your_password -Q ALTER LOGIN SA WITH PASSWORDYourNewStrong!Passw0rd3.2 应用服务构建与启动dotnet restore dotnet build docker-compose up -d构建过程约需8-15分钟视硬件性能而定。建议在VS中打开输出窗口监控构建进度遇到NuGet包下载失败时右键解决方案选择还原NuGet包。4. 常见问题排查指南4.1 端口冲突解决方案错误现象Address already in use处理方法查询占用端口的进程netstat -ano | findstr :5104在任务管理器结束对应PID进程或修改docker-compose.yml中的外部端口号4.2 跨服务通信失败典型报错Connection refused检查步骤确认所有容器正常运行docker ps -a测试服务连通性docker exec -it eshop-basket curl http://catalog:51014.3 前端资源加载异常解决方案清除浏览器缓存检查nginx日志docker logs eshop-nginx重建前端容器docker-compose up -d --force-recreate webmvc5. 性能优化实战技巧经过20次部署测试总结出三个关键优化点镜像构建加速# 在Dockerfile中加入缓存指令 RUN dotnet restore --packages /packages COPY . . RUN dotnet build --no-restore开发模式热重载dotnet watch run --project src/Web/WebMVC数据库连接池配置ConnectionStrings: { CatalogDB: Servereshop-mssql;DatabaseCatalogDB;Usersa;Passwordyour_password;Max Pool Size200; }最后分享一个监控技巧在VS的诊断工具窗口中开启CPU和内存分析能快速定位到具体服务的性能瓶颈。我在实际项目中通过这个方法发现过Redis连接泄漏问题将响应时间从1200ms降到200ms以内。