首页
/ eShopOnWeb项目Docker容器化部署指南

eShopOnWeb项目Docker容器化部署指南

2025-07-06 06:00:57作者:尤辰城Agatha

项目概述

eShopOnWeb是一个基于ASP.NET Core构建的现代化电子商务示例应用,展示了微软推荐的企业级Web应用架构模式。该项目采用微服务架构设计,包含了Web MVC前端和Public API后端服务。

Docker Compose架构解析

该docker-compose.yml文件定义了三个关键服务,构成了eShopOnWeb应用的基础运行环境:

1. Web MVC前端服务 (eshopwebmvc)

  • 镜像构建:使用项目根目录下的Dockerfile构建镜像,具体路径为src/Web/Dockerfile
  • 依赖关系:依赖于sqlserver服务,确保数据库服务先启动
  • 环境变量:支持通过DOCKER_REGISTRY变量指定私有镜像仓库

2. Public API后端服务 (eshoppublicapi)

  • 镜像构建:同样基于项目根目录构建,使用src/PublicApi/Dockerfile
  • 依赖关系:同样需要等待sqlserver服务就绪
  • 设计考虑:API服务与Web前端分离,符合前后端分离架构原则

3. SQL Server数据库服务 (sqlserver)

  • 基础镜像:采用微软官方的Azure SQL Edge镜像(mcr.microsoft.com/azure-sql-edge)
  • 端口映射:将容器内1433端口映射到主机1433端口
  • 环境配置
    • SA_PASSWORD:设置强密码"@someThingComplicated1234"
    • ACCEPT_EULA=Y:自动接受最终用户许可协议

部署流程详解

  1. 环境准备

    • 确保已安装Docker和Docker Compose
    • 配置好.NET Core SDK开发环境
  2. 构建与运行

    docker-compose build
    docker-compose up
    
  3. 服务访问

    • Web MVC前端:http://localhost:5000
    • Public API:http://localhost:5001
    • SQL Server:可通过1433端口连接

安全注意事项

  1. 数据库密码

    • 生产环境中不应将密码硬编码在配置文件中
    • 建议使用Docker secrets或环境变量文件管理敏感信息
  2. 镜像安全

    • 定期更新基础镜像以获取安全补丁
    • 考虑使用私有镜像仓库存储业务镜像

扩展建议

  1. 添加Redis缓存: 可扩展compose文件加入Redis服务,提升应用性能

  2. 日志收集: 集成ELK或Fluentd实现集中式日志管理

  3. 健康检查: 为各服务添加healthcheck配置,确保服务可用性

常见问题排查

  1. 数据库连接失败

    • 检查sqlserver服务是否正常启动
    • 验证SA密码是否正确
  2. 端口冲突

    • 确认主机1433、5000、5001端口未被占用
    • 必要时修改端口映射配置
  3. 构建失败

    • 确保项目依赖已正确恢复
    • 检查Dockerfile中的构建上下文路径

通过这份Docker Compose配置,开发者可以快速搭建完整的eShopOnWeb运行环境,便于开发测试和演示。生产部署时,建议根据实际需求调整资源配置和安全设置。