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配置定义了两个主要服务:
- Web应用服务:基于.NET构建的Web应用程序
- 数据库服务:使用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
关键配置说明:
- 镜像构建:使用当前目录下的Dockerfile构建名为
architecture/web
的镜像 - 自动重启:设置
restart: always
确保服务崩溃后自动重启 - 环境变量:
SigningKey
:用于应用安全签名的密钥ConnectionStrings__Context
:数据库连接字符串,指向名为architecture_database
的SQL Server容器Serilog
配置:指定日志文件存储路径为容器内的/app/logs/
目录
- 端口映射:将容器内部的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
关键配置说明:
- 官方镜像:使用Microsoft官方提供的SQL Server镜像
- 环境变量:
ACCEPT_EULA=Y
:接受最终用户许可协议SA_PASSWORD
:设置sa用户的密码为P4ssW0rd!
- 数据持久化:使用Docker卷
database
持久化存储SQL Server数据,防止容器重启后数据丢失 - 端口映射:将容器内部的1433端口映射到主机的1433端口
部署步骤
-
准备部署文件: 确保当前目录包含项目的Dockerfile和docker-compose.yml文件
-
构建并启动服务: 执行以下命令:
docker-compose up --detach --build --force-recreate --remove-orphans
命令参数说明:
--detach
:在后台运行容器--build
:构建镜像--force-recreate
:强制重新创建容器--remove-orphans
:移除不再使用的容器
-
验证服务:
- Web应用:访问
http://localhost:8090
- 数据库:使用SQL客户端连接
localhost:1433
,用户名sa
,密码P4ssW0rd!
- Web应用:访问
安全建议
-
生产环境注意事项:
- 替换默认的
SigningKey
和数据库密码 - 考虑使用Docker secrets管理敏感信息
- 配置适当的网络隔离
- 替换默认的
-
日志管理: 虽然配置了日志路径,但应考虑将日志导出到外部系统如ELK或Splunk进行集中管理
常见问题排查
-
数据库连接失败:
- 检查数据库容器是否正常运行
- 验证连接字符串中的服务器名称和密码是否正确
- 确保
TrustServerCertificate=true
参数存在
-
端口冲突:
- 如果主机端口8090或1433已被占用,修改docker-compose.yml中的端口映射配置
-
构建失败:
- 确保Dockerfile存在且配置正确
- 检查网络连接,确保能正常拉取基础镜像
扩展建议
-
添加健康检查: 可以在docker-compose.yml中添加健康检查配置,监控服务状态
-
多环境配置: 考虑使用docker-compose.override.yml为不同环境(开发、测试、生产)提供特定配置
-
负载均衡: 对于生产环境,可以考虑添加Nginx或Traefik作为反向代理和负载均衡器
通过以上配置和步骤,您可以成功部署Architecture项目的容器化环境。这种部署方式提供了良好的隔离性和可移植性,非常适合现代云原生应用的开发和部署。