如何无坑部署Docker Compose多.NET API与Vue前端及多数据库?

摘要:本文介绍在Linux 服务器上,基于 Docker Compose 部署多.NET 后端 API 与多 Vue 前端 Web 的方案,解决多服务端口冲突、配置混乱问题,适配个人测试、小型项目部署场景。
先完成环境准备:安装配
接上篇文章:Linux Docker Compose 部署.NET+Vue+MySQL+Redis+Nginx 完整记录(亲测无坑) 写在前面:在实际开发和测试中,经常会遇到需要在同一台服务器部署多个后端API(如主服务+附属服务、测试服务+生产服务)和多个前端Web(如管理端+用户端、PC端+移动端适配版)的场景。单纯靠docker run命令逐个启动容器,会面临端口冲突、配置混乱、维护困难等问题。 本文基于Docker Compose,实现「2个及以上.NET8后端API + 2个及以上Vue前端Web」的容器化部署,核心解决端口隔离、配置统一、Nginx分流等问题;同时扩展PostgreSQL、SQL Server两种数据库的替换方案,补充多个实用部署场景(如子域名访问、HTTPS、日志集中),全程亲测可复现,用于后期查阅,也希望能帮到有同样需求的同行。 适用场景:个人测试、小型项目多服务部署、企业内部多环境(测试+开发)部署,可灵活扩展服务数量,无需重新搭建整体环境。 一、部署环境准备(提前确认,避免兼容问题) 1. 服务器环境(通用,测试/小型生产均适用) 系统:CentOS 7.9(最小化安装,已配置静态IP:192.168.1.100,替换为自身服务器真实IP) 内存:8G(建议不低于4G,多服务同时运行需足够内存,避免卡顿) 硬盘:100G(存放多个服务的镜像、打包文件、数据库数据,预留冗余) 网络:能访问外网(前期拉取镜像、安装依赖,后期可断网运行;若内网服务器,提前准备离线镜像) 权限:root用户(或具备Docker、目录操作权限的普通用户,生产环境建议用普通用户) 2. 软件版本(全程统一,避免兼容问题) Docker:Docker CE 24.0.7(CentOS7稳定版,兼容性强) Docker Compose:V2.27.1(支持新版配置,解决多服务依赖、健康检查兼容问题) 后端:.NET 8(本地VS2022发布为publish文件夹,无源码,多后端需单独发布) 前端:Vue3(本地yarn/npm打包为dist文件夹,无源码,多前端需单独打包) 数据库(多版本可选):MySQL 8.0、PostgreSQL 15、SQL Server 2022(Docker镜像,数据持久化) 缓存:Redis 7-alpine(轻量版,占用资源少,适配多服务共享/隔离缓存) 代理:Nginx alpine(轻量版,实现多前端代理、多后端分流) 3. 本地准备文件(提前打包,上传到服务器) 所有文件统一放在本地易找到的目录(如桌面),后续用Xftp/WinSCP上传到服务器,避免混乱,文件清单如下: 后端文件:backend1-publish、backend2-publish(2个后端的.NET8发布文件,可新增backend3-publish等,命名区分) 前端文件:frontend1-dist、frontend2-dist(2个前端的Vue打包文件,可新增,命名区分) 镜像tar包(离线备用):multi-service-images.tar(含所有所需镜像:后端运行时、前端代理、3种数据库、Redis,解决网络拉取超时) 配置文件: nginx.conf(Nginx核心配置,实现多前端/多后端分流) 数据库配置:my.cnf(MySQL)、postgresql.conf(PostgreSQL)、sqlserver.conf(SQL Server,可选) 数据库初始化SQL:init-mysql.sql、init-postgresql.sql、init-sqlserver.sql(对应不同数据库,创建库、表、初始化数据) docker-compose.yml(核心编排文件,管理所有服务,含多数据库可选配置) 二、前期基础准备工作(必做,奠定部署基础) 无论后续用哪种数据库、部署多少服务,这部分工作都是基础,一次性做好,避免后续重复操作。
阅读全文