之前博客写过在 Linux 上面部署前后端分离项目,服务器环境配置比较繁琐
使用 docker 构建镜像文件 来部署 springboot 项目,可以大大减少配置过程中的出错概率
基于基础镜像构建镜像文件
命令 | 作用 | 例子 |
FROM | 指定基础镜像,基于基础base镜像构建 | FROM centos:7 |
ENV | 设置环境变量,可在后面指令中使用 | ENV key value |
COPY | copy本地文件至镜像文件内部 | COPY ./springboot-demo.jar /tpm/demo.jar |
RUN | 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
EXPOSE | 指定运行镜像文件时暴漏的端口 | EXPOSE 8080 |
ENTRYPOINT | 镜像中的启动命令,容器运行时自动调用 | ENTRYPOINT java -jar demo.jar |
1. 编写 dockerfile 文件
# 新建一个dockerfile文件
vi dockerfile-springboot
# 依赖于openjdk-11构建docker镜像
FROM openjdk:11
# 将linux本地jar包copy到镜像文件内
COPY ./springboot/springboot-demo.jar /usr/src/demo.jar
# 暴露出server.port=8080端口
EXPOSE 8080
# java 项目启动命令---在docker run 容器的时候会自动调用该命令启动springboot项目
ENTRYPOINT java -jar /usr/src/demo.jar
2. 生成镜像文件
docker build -f dockerfile-springboot -t springboot-demo:1.0 .
# -f: 指定读取的 dockerfile 文件
# -t: 指定生成的docker镜像文件名字以及tag
# .: 代表从当前目录读取
3. 运行容器
docker run -d -p 80:8080 --name myspringbootdemo springboot-demo:1.0
因为 tomcat 配置的server.port=8080,前端浏览器默认http请求在80端口,所以需要把80端口映 射到容器的8080端口。
4. 查看效果
直接访问服务器所在公网ip
5. 总结
本文单纯部署了后端项目,没有部署前端项目,同样的可以基于nginx反向代理服务器构建一个镜像,然后把前端项目部署到镜像中,nginx 监听 80 端口,在转发请求到 tomcat 所在的镜像容器端口即可.