【部署上线】Docker + Nginx + MySQL 一键部署 Tlias?手把手教你把学习项目跑在云服务器上
学完后端开发,写了一个像模像样的管理系统(比如经典的 Tlias 人力资源管理系统),本地运行一切正常——但如何让同学、面试官或自己在外网访问它?很多初学者卡在“部署”这最后一公里:环境依赖复杂、端口配置混乱、数据库连不上……其实,借助 Docker 容器化技术,配合 Nginx 反向代理和 MySQL 服务,我们完全可以实现 “一键部署、快速上线” 。本文以 Tlias 项目为例,手把手带你将 Spring Boot + Vue 的全栈应用部署到云服务器。
一、准备工作:一台云服务器 + 基础环境
-
购买云服务器:阿里云/腾讯云轻量应用服务器(1核2G足够),系统选 Ubuntu 22.04;
-
开放安全组端口:确保 80(HTTP)、443(HTTPS)、22(SSH)端口开放;
-
安装基础工具:
sudo apt update sudo apt install -y docker.io docker-compose sudo systemctl enable --now docker
二、项目结构梳理
假设你的 Tlias 项目包含:
- 后端:
tlias-backend.jar(Spring Boot,内嵌 Tomcat,默认端口 8080) - 前端:
dist/目录(Vue 打包后的静态文件) - 数据库:MySQL,需初始化
tlias.sql表结构
目标:用户访问 http://你的服务器IP → Nginx 返回前端页面;
API 请求(如 /api/depts)→ Nginx 代理到后端 8080 端口。
三、Docker Compose 编排:三服务一体
在服务器新建目录 ~/tlias-deploy,创建 docker-compose.yml:
version: '3.8'
services:
mysql:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: tlias
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql # 初始化脚本
- mysql_data:/var/lib/mysql
ports:
- "3306:3306" # 仅调试用,生产建议移除
backend:
build:
context: .
dockerfile: Dockerfile.backend
restart: always
depends_on:
- mysql
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/tlias?useSSL=false
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root123
ports:
- "8080:8080"
nginx:
image: nginx:alpine
restart: always
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./dist:/usr/share/nginx/html
depends_on:
- backend
volumes:
mysql_data:
四、关键文件准备
-
后端 Dockerfile(
Dockerfile.backend):FROM openjdk:17-jdk-slim COPY tlias-backend.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] -
Nginx 配置(
nginx.conf):events {} http { server { listen 80; location / { root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://backend:8080/; proxy_set_header Host $host; } } } -
数据库初始化脚本(
init.sql):放入你的建表语句。
将 tlias-backend.jar、dist/、上述配置文件全部上传至服务器 ~/tlias-deploy 目录。
五、一键启动 & 验证
在 tlias-deploy 目录下执行:
docker-compose up -d
等待10秒,浏览器访问 http://你的服务器IP,即可看到 Tlias 系统首页!所有 API 请求自动代理到后端,数据持久化在 MySQL 中。
六、进阶建议
- 域名 + HTTPS:用 Certbot 为 Nginx 配置免费 SSL 证书;
- 日志查看:
docker-compose logs -f backend实时调试; - 数据备份:定期备份
mysql_data卷; - 安全加固:关闭 MySQL 3306 外网端口,仅容器间通信。
结语
通过 Docker Compose,我们将原本分散的组件整合为一个可移植、易维护的部署单元。这不仅让你的学习项目真正“上线”,更掌握了企业级应用交付的核心范式。从本地 run 起来到云上跑起来,是每个开发者迈向工程化的关键一步。现在,就去给你的 Tlias 一个公网身份证吧!