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

Architecture项目Docker容器化部署指南

2025-07-10 01:44:17作者:袁立春Spencer

项目概述

Architecture项目是一个基于.NET技术栈的Web应用程序,采用微服务架构设计。本文主要介绍如何使用Docker Compose工具来容器化部署该项目的Web应用和数据库服务。

环境准备

在开始部署前,请确保您的系统已安装以下工具:

  • Docker Engine 19.03或更高版本
  • Docker Compose 1.25.0或更高版本

部署架构解析

Architecture项目的Docker Compose配置定义了两个主要服务:

  1. Web应用服务:基于.NET构建的Web应用程序
  2. 数据库服务:使用Microsoft SQL Server作为数据存储

Web应用服务配置详解

web:
    image: architecture/web
    container_name: architecture_web
    restart: always
    build:
        context: .
    environment:
        - SigningKey=58a97cd766d741e8a21b8d3c4279652469801dc8da844fa5bf80afeea85aa472
        - ConnectionStrings__Context=Server=architecture_database;Database=Database;User Id=sa;Password=P4ssW0rd!;TrustServerCertificate=true;
        - Serilog__WriteTo__1__Args__path=/app/logs/
    depends_on:
        - database
    ports:
        - 8090:8080

关键配置说明

  1. 镜像构建:使用当前目录下的Dockerfile构建名为architecture/web的镜像
  2. 自动重启:设置restart: always确保服务崩溃后自动重启
  3. 环境变量
    • SigningKey:用于应用安全签名的密钥
    • ConnectionStrings__Context:数据库连接字符串,指向名为architecture_database的SQL Server容器
    • Serilog配置:指定日志文件存储路径为容器内的/app/logs/目录
  4. 端口映射:将容器内部的8080端口映射到主机的8090端口

数据库服务配置详解

database:
    image: mcr.microsoft.com/mssql/server
    container_name: architecture_database
    restart: always
    environment:
        - ACCEPT_EULA=Y
        - SA_PASSWORD=P4ssW0rd!
    ports:
        - 1433:1433
    volumes:
        - database:/var/opt/mssql

关键配置说明

  1. 官方镜像:使用Microsoft官方提供的SQL Server镜像
  2. 环境变量
    • ACCEPT_EULA=Y:接受最终用户许可协议
    • SA_PASSWORD:设置sa用户的密码为P4ssW0rd!
  3. 数据持久化:使用Docker卷database持久化存储SQL Server数据,防止容器重启后数据丢失
  4. 端口映射:将容器内部的1433端口映射到主机的1433端口

部署步骤

  1. 准备部署文件: 确保当前目录包含项目的Dockerfile和docker-compose.yml文件

  2. 构建并启动服务: 执行以下命令:

    docker-compose up --detach --build --force-recreate --remove-orphans
    

    命令参数说明:

    • --detach:在后台运行容器
    • --build:构建镜像
    • --force-recreate:强制重新创建容器
    • --remove-orphans:移除不再使用的容器
  3. 验证服务

    • Web应用:访问http://localhost:8090
    • 数据库:使用SQL客户端连接localhost:1433,用户名sa,密码P4ssW0rd!

安全建议

  1. 生产环境注意事项

    • 替换默认的SigningKey和数据库密码
    • 考虑使用Docker secrets管理敏感信息
    • 配置适当的网络隔离
  2. 日志管理: 虽然配置了日志路径,但应考虑将日志导出到外部系统如ELK或Splunk进行集中管理

常见问题排查

  1. 数据库连接失败

    • 检查数据库容器是否正常运行
    • 验证连接字符串中的服务器名称和密码是否正确
    • 确保TrustServerCertificate=true参数存在
  2. 端口冲突

    • 如果主机端口8090或1433已被占用,修改docker-compose.yml中的端口映射配置
  3. 构建失败

    • 确保Dockerfile存在且配置正确
    • 检查网络连接,确保能正常拉取基础镜像

扩展建议

  1. 添加健康检查: 可以在docker-compose.yml中添加健康检查配置,监控服务状态

  2. 多环境配置: 考虑使用docker-compose.override.yml为不同环境(开发、测试、生产)提供特定配置

  3. 负载均衡: 对于生产环境,可以考虑添加Nginx或Traefik作为反向代理和负载均衡器

通过以上配置和步骤,您可以成功部署Architecture项目的容器化环境。这种部署方式提供了良好的隔离性和可移植性,非常适合现代云原生应用的开发和部署。