部署服务端(后端)

1). 修改项目的配置文件,修改数据库服务地址(打包package)

然后,执行maven中的package生命周期,进行打包(跳过测试),并将打包后的jar包命名为 tlias.jar 。


2). 编写Dockerfile文件 (AI辅助) 。
文件名 Dockerfile:
bash# 使用 CentOS 7 作为基础镜像 FROM centos:7 # 添加 JDK 到镜像中 COPY jdk17.tar.gz /usr/local/ RUN tar -xzf /usr/local/jdk17.tar.gz -C /usr/local/ && rm /usr/local/jdk17.tar.gz # 设置环境变量 ENV JAVA_HOME=/usr/local/jdk-17.0.10 ENV PATH=$JAVA_HOME/bin:$PATH # 阿里云OSS环境变量 ENV OSS_ACCESS_KEY_ID=LTAI5tP6dc4cvccdvvySE39X ENV OSS_ACCESS_KEY_SECRET=ZSyIT31qhxIkS0dH1H9WzHqPiyM3Ot #统一编码 ENV LANG=en_US.UTF-8 ENV LANGUAGE=en_US:en ENV LC_ALL=en_US.UTF-8 # 创建应用目录 RUN mkdir -p /tlias WORKDIR /tlias # 复制应用 JAR 文件到容器 COPY tlias.jar tlias.jar # 暴露端口 EXPOSE 8080 # 运行命令 ENTRYPOINT ["java","-jar","/tlias/tlias.jar"]
由于项目要运行,需要依赖jdk的环境,所以这里我们需要将tlias.jar,jdk17.tar.gz,Dockerfile三个文件,上传到Linux服务器的 /root/tlias 目录下(如果没有这个目录,提前创建好)。

3). 构建Docker镜像,部署Docker容器,运行测试。
- 构建Docker镜像
docker build -t tlias:1.0 .

- 部署Docker容器
docker run -d --name tlias-server --network itheima -p 8080:8080 tlias:1.0
通过 docker logs -f 容器名,就可以查看容器的运行日志。

这样后端服务,就已经启动起来了。
部署前端

-
需求:创建一个新的nginx容器,将资料中提供的前端项目的静态资源部署到nginx中。
-
步骤:
-
在宿主机上准备静态文件及配置文件存放目录(在
/usr/local目录下创建tlias-web目录)。-v /usr/local/tlias-web/html:/usr/share/nginx/html-v /usr/local/tlias-web/conf/nginx.conf:/etc/nginx/nginx.conf -
部署nginx容器
-
1). 部署nginx容器(设置目录映射)。
- 将 目录
html和 配置文件存放目录conf,上传至服务器端的/usr/local/tlias-web目录下。



- 执行如下命令,部署nginx容器
bashdocker run -d \ --name nginx-tlias \ -v /usr/local/tlias-web/html:/usr/share/nginx/html \ -v /usr/local/tlias-web/conf/nginx.conf:/etc/nginx/nginx.conf \ --network itheima \ -p 80:80 \ nginx:1.20.2
前后端都部署完毕后,就可以打开浏览器,来测试一下。访问前端的nginx服务器 。

总结
先部署mysql然后是后端最后是前端
部署MySQL
在前面的这个本地目录挂载当中我们实现了mysql的操作容器数据目录,
配置文件,还有初始化脚本的目录
挂载而在初始化脚本当中有相关的数据库文件然后把它挂在上来
bashdocker run -d \ --name mysql \ -p 3307:3306 \ -e MYSQL_ROOT_PASSWORD=123 \ -e TZ=Asia/Shanghai \ -v /root/mysql/data:/var/lib/mysql \ -v /root/mysql/init:/docker-entrypoint-initdb.d \ -v /root/mysql/conf:/etc/mysql/conf.d \ mysql:8

后端项目
如何部署一个后端项目
一般会按 "数据库 → 应用 → 容器化 → 部署验证" 这个思路来做:
- 先准备基础环境(数据库)
• 使用 Docker 启动 MySQL 容器
• 创建业务所需的数据库和表结构
• 确保数据库服务稳定可访问
- 处理后端应用本身(以 Java / Spring Boot 为例)
• 修改项目配置文件,把数据库地址改成容器或服务器对应的地址
• 调整日志配置(如 logback),把日志输出到容器可挂载的目录,方便后期运维
• 将项目打包成可运行的 jar 包
- 对后端应用进行容器化
• 编写 Dockerfile,指定基础 JDK 镜像
• 把 jar 包复制到镜像中,并设置启动方式
• 构建后端应用的 Docker 镜像
- 部署并运行容器
• 使用构建好的镜像启动容器
• 配置端口映射、环境变量、日志目录挂载
• 确认后端服务能正常启动并连接数据库
- 运行与验证
• 通过接口或前端访问验证服务是否正常
• 检查日志和数据库连接是否正常
一句总结
整个过程的核心是:先保证数据库可用,再让应用配置适配容器环境,最后通过 Docker 实现标准化部署和运行。
前端
前端项目你是怎么部署的?
一般是通过 Nginx + Docker 容器化 的方式来部署前端静态资源,整体思路是:
1️⃣ 创建并部署 Nginx 容器
• 使用 Docker 启动一个独立的 Nginx 容器
• 通过目录映射的方式:
• 将前端打包后的 静态资源 映射到 Nginx 的 html 目录
• 将自定义的 nginx.conf 配置文件 映射到容器中
• 这样做的好处是:
• 不用进容器改配置
• 前端资源和配置都可以在宿主机统一管理
⸻
2️⃣ 配置 Nginx 反向代理(重点)
• 在 nginx.conf 中配置 反向代理规则
• 直接使用 Docker 容器名作为 upstream 地址,而不是 IP
• 例如:
• 前端通过 Nginx
• Nginx 反向代理到后端容器 tlias-web-management
• 这是基于 Docker 内部网络的 容器名自动 DNS 解析机制
• 好处是:
• 容器重启 IP 改变也不受影响
• 服务之间解耦,部署更稳定
👉 面试时可以一句话点亮:
"Nginx 在 Docker 网络中可以直接通过容器名访问后端服务。"
⸻
3️⃣ 上传并部署前端资源
• 将前端项目打包后的静态文件上传到服务器
• 放入 Nginx 容器映射的目录中
• 同时准备好对应的 Nginx 配置文件
⸻
4️⃣ 启动并验证
• 启动 Nginx 容器
• 通过浏览器访问前端地址
• 验证:
• 静态资源是否正常加载
• 接口请求是否成功被反向代理到后端容器
⸻
总结一句话
前端通过 Nginx 容器提供静态资源服务,并利用 Docker 网络和容器名 实现对后端容器的反向代理,整体部署方式清晰、稳定、易维护。