Docker项目部署教程
部署服务端(后端)

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 网络和容器名 实现对后端容器的反向代理,整体部署方式清晰、稳定、易维护。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
dockerfile的使用及使用dockerfile部署springboot项目的过程
Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本,这篇文章主要介绍了dockerfile的使用,使用dockerfile部署springboot项目,需要的朋友可以参考下2023-04-04
详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置
本篇文章主要介绍了详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-06


最新评论