![Docker容器化部署ASP.NET Core 6 Clean Architecture项目:从开发到生产环境完整指南 [特殊字符]](http://pic.xiahunao.cn/yaotu/Docker容器化部署ASP.NET Core 6 Clean Architecture项目:从开发到生产环境完整指南 [特殊字符])
Docker容器化部署ASP.NET Core 6 Clean Architecture项目从开发到生产环境完整指南 【免费下载链接】CleanArchitectureASP.NET Core 6 Web API Clean Architecture Solution Template项目地址: https://gitcode.com/gh_mirrors/cleanarchitecture/CleanArchitectureASP.NET Core 6 Clean Architecture项目提供了一套完整的解决方案模板采用清晰的分层架构设计。通过Docker容器化部署您可以轻松地将这个现代化的Web API项目从开发环境迁移到生产环境。本文将为您提供从零开始的完整部署指南帮助您快速掌握容器化部署的最佳实践。为什么选择Docker容器化部署 Docker容器化部署为ASP.NET Core 6 Clean Architecture项目带来了诸多优势环境一致性确保开发、测试、生产环境完全一致快速部署一键启动所有服务依赖资源隔离每个服务运行在独立的容器中易于扩展基于容器编排工具实现水平扩展简化运维统一的部署和管理方式项目架构概览 Clean Architecture项目采用经典的四层架构设计Domain层(src/Common/CleanArchitecture.Domain/) - 包含核心业务实体和接口Application层(src/Common/CleanArchitecture.Application/) - 实现业务逻辑和应用服务Infrastructure层(src/Common/CleanArchitecture.Infrastructure/) - 处理数据访问和外部服务Web API层(src/Apps/CleanArchitecture.Api/) - 提供HTTP API接口准备工作与环境要求 ⚙️在开始Docker部署之前请确保您的系统满足以下要求Docker Desktop20.10 或Docker Engine20.10.NET 6 SDK- 用于本地开发和构建Git- 用于克隆项目代码至少4GB可用内存- 用于运行多个容器服务第一步获取项目代码 首先从仓库获取项目源代码git clone https://gitcode.com/gh_mirrors/cleanarchitecture/CleanArchitecture cd CleanArchitecture第二步理解Docker配置文件 项目已经为您准备好了完整的Docker配置Dockerfile详解项目的Dockerfile位于 src/Apps/CleanArchitecture.Api/Dockerfile采用多阶段构建优化镜像大小# 基础运行时镜像 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 433 # 构建阶段 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY [src/Apps/CleanArchitecture.Api/CleanArchitecture.Api.csproj, src/Apps/CleanArchitecture.Api/] COPY [src/Common/CleanArchitecture.Infrastructure/CleanArchitecture.Infrastructure.csproj, src/Common/CleanArchitecture.Api.Infrastructure/] # ... 更多依赖项复制 RUN dotnet restore src/Apps/CleanArchitecture.Api/CleanArchitecture.Api.csproj COPY . . WORKDIR /src/src/Apps/CleanArchitecture.Api RUN dotnet build CleanArchitecture.Api.csproj -c Release -o /app/build # 发布阶段 FROM build AS publish RUN dotnet publish CleanArchitecture.Api.csproj -c Release -o /app/publish # 最终镜像 FROM base AS final WORKDIR /app COPY --frompublish /app/publish . ENTRYPOINT [dotnet, CleanArchitecture.Api.dll]Docker Compose配置docker-compose.yml 文件定义了完整的服务栈version: 3.4 services: sql-server-db: image: mcr.microsoft.com/mssql/server:2019-latest environment: SA_PASSWORD: Matech123 ACCEPT_EULA: Y ports: - 21433:1433 networks: - webnet webapi: build: context: . dockerfile: src/Apps/CleanArchitecture.Api/Dockerfile ports: - 5005:80 environment: - UseInMemoryDatabasefalse - ConnectionStrings__DefaultConnectionServersql-server-db;DatabaseCleanArchitectureDb;Usersa;PasswordMatech123;MultipleActiveResultSetstrue networks: - webnet depends_on: - sql-server-db - es01 es01: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 environment: - node.namees01 - cluster.namees-docker-cluster ports: - 9200:9200 networks: - webnet kib01: image: docker.elastic.co/kibana/kibana:7.10.1 ports: - 5601:5601 environment: ELASTICSEARCH_URL: http://es01:9200 networks: - webnet第三步配置数据库连接 根据您的需求可以配置不同的数据库提供程序SQL Server配置在 src/Apps/CleanArchitecture.Api/appsettings.json 中设置{ DbProvider: SqlServer, ConnectionStrings: { DefaultConnection: Serversql-server-db;DatabaseCleanArchitectureDB;User IdSA;PasswordMatech123;MultipleActiveResultSetstrue; } }PostgreSQL配置{ DbProvider: Npgsql, ConnectionStrings: { DefaultConnection_Postgres: User IDpostgres;PasswordMatech_1850;Serverpostgres-db;Port5432;DatabaseCleanArchitectureDB;Integrated Securitytrue;Poolingtrue; } }SQLite配置开发环境推荐{ DbProvider: Sqlite, ConnectionStrings: { DefaultConnection_Sqlite: Data Sourceclean_architect.db;CacheShared } }第四步构建和运行容器 快速启动所有服务使用Docker Compose一键启动所有服务docker-compose up -d这个命令会启动SQL Server数据库- 端口21433ASP.NET Core Web API- 端口5005Elasticsearch- 端口9200Kibana- 端口5601查看服务状态docker-compose ps查看日志docker-compose logs -f webapi第五步验证部署 ✅访问API文档打开浏览器访问http://localhost:5005/swagger您将看到Swagger UI界面可以测试所有API端点。健康检查访问健康检查端点curl http://localhost:5005/health数据库连接验证检查数据库迁移状态docker-compose exec webapi dotnet ef database update第六步生产环境优化 ⚡1. 安全配置修改默认密码和密钥启用HTTPS配置防火墙规则使用环境变量管理敏感信息2. 性能优化调整容器资源限制配置日志轮转启用响应缓存优化数据库连接池3. 监控和日志项目集成了Elasticsearch和Kibana用于日志管理访问Kibanahttp://localhost:5601配置日志索引模式创建仪表板和告警常见问题解决 问题1端口冲突如果端口已被占用修改docker-compose.yml中的端口映射webapi: ports: - 8080:80 # 修改为可用端口问题2数据库连接失败检查数据库容器状态docker-compose logs sql-server-db问题3内存不足调整容器内存限制es01: deploy: resources: limits: memory: 1G高级部署策略 1. 使用Docker Swarm# 初始化Swarm集群 docker swarm init # 部署服务栈 docker stack deploy -c docker-compose.yml cleanarch2. Kubernetes部署创建Kubernetes部署文件apiVersion: apps/v1 kind: Deployment metadata: name: cleanarchitecture-api spec: replicas: 3 selector: matchLabels: app: cleanarchitecture-api template: metadata: labels: app: cleanarchitecture-api spec: containers: - name: api image: cleanarchitecture-api:latest ports: - containerPort: 803. CI/CD集成在GitHub Actions中配置自动构建name: Build and Push Docker Image on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv2 - name: Build Docker image run: docker-compose build - name: Push to Registry run: | docker tag cleanarchitecture-api:latest ${{ secrets.REGISTRY }}/cleanarchitecture-api:latest docker push ${{ secrets.REGISTRY }}/cleanarchitecture-api:latest最佳实践总结 分层构建利用Docker多阶段构建减少镜像大小环境分离为不同环境创建不同的配置文件健康检查实现完整的健康检查端点日志集中使用Elasticsearch集中管理日志监控告警配置适当的监控和告警机制备份策略定期备份数据库和配置结语 通过本文的完整指南您已经掌握了ASP.NET Core 6 Clean Architecture项目的Docker容器化部署全流程。从本地开发到生产环境Docker为您提供了一致的部署体验大大简化了运维复杂度。记住成功的部署不仅仅是让应用运行起来更重要的是建立可靠、可扩展、易维护的部署体系。祝您部署顺利 提示在实际生产环境中请务必遵循安全最佳实践定期更新依赖并建立完整的监控和告警体系。【免费下载链接】CleanArchitectureASP.NET Core 6 Web API Clean Architecture Solution Template项目地址: https://gitcode.com/gh_mirrors/cleanarchitecture/CleanArchitecture创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考