部署服务端(后端)

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

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


2). 编写Dockerfile文件(AI辅助)。
文件名 Dockerfile:
# 使用 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容器
docker 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的操作容器数据目录,
配置文件,还有初始化脚本的目录
挂载而在初始化脚本当中有相关的数据库文件然后把它挂在上来
docker 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

后端项目
如何部署一个后端项目
一般会按 “数据库 → 应用 → 容器化 → 部署验证” 这个思路来做:
1. 先准备基础环境(数据库)
• 使用 Docker 启动 MySQL 容器
• 创建业务所需的数据库和表结构
• 确保数据库服务稳定可访问
2. 处理后端应用本身(以 Java / Spring Boot 为例)
• 修改项目配置文件,把数据库地址改成容器或服务器对应的地址
• 调整日志配置(如 logback),把日志输出到容器可挂载的目录,方便后期运维
• 将项目打包成可运行的 jar 包
3. 对后端应用进行容器化
• 编写 Dockerfile,指定基础 JDK 镜像
• 把 jar 包复制到镜像中,并设置启动方式
• 构建后端应用的 Docker 镜像
4. 部署并运行容器
• 使用构建好的镜像启动容器
• 配置端口映射、环境变量、日志目录挂载
• 确认后端服务能正常启动并连接数据库
5. 运行与验证
• 通过接口或前端访问验证服务是否正常
• 检查日志和数据库连接是否正常
一句总结
整个过程的核心是:先保证数据库可用,再让应用配置适配容器环境,最后通过 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 网络和容器名 实现对后端容器的反向代理,整体部署方式清晰、稳定、易维护。





