docker 部署spring boot 前后端项目

1. 前言

本文主要介绍在项目部署的过程中,通过docker 部署spring boot 前后端分离项目。其中前端通过vue编写,部署在nginx 中。后端 spring boot 项目在启动时,配置文件挂和jar包挂载到宿主机文件夹中。方便项目更新

2. 后端项目 部署

  1. 创建Dockerfile 文件
    文件内容:
#  基础镜像
FROM openjdk:8
#Default to UTF-8 file.encoding
ENV LANG C.UTF-8
#设置alpine时区
ENV TIMEZONE Asia/Shanghai
#创建文件夹
RUN mkdir -p /usr/web

EXPOSE 8080

#将jar 包添加到创建的文件夹中
ADD ruoyi.jar /usr/web/
# 拷贝配置文件
COPY config /usr/web/
# 设置环境变量 保存当前工作目录
ENV WORKDIR /usr/web/
# 当前工作目录
WORKDIR $WORKDIR
CMD java -jar /usr/web/ruoyi.jar
  1. 项目配置文件、jar包和Dockerfile 放到一个文件夹下
    在这里插入图片描述

  2. 生成镜像
    如果本机未安装docker 则需上传到已安装docker的服务器上
    执行命令:
    docker build -t ry-admin .
    注意: 该命令后边又一个 “.”

  3. 运行镜像:
    docker run -p 8080:8080 --name web_ry -v /vdc/project/ruoyi/config:/usr/web/config -v /vdc/project/ruoyi/ruoyi.jar:/usr/web/ruoyi.jar ry-admin

/vdc/project/ruoyi/config 存放的项目配置文件信息(本项目的配置文件为:application.yml、application-druid.yml)
/vdc/project/ruoyi/ruoyi.jar 宿主机挂载的jar包信息。
/usr/web 容器中的文件目录,在Dockerfile 中已经申明。

3. 前端项目部署

  1. 拉取nginx 镜像
docker pull nginx
  1. 上传已编译的文件到服务器指定目录
    vue 项目编译完成后,编译后的文件会一般保存到同目录的 dist 文件夹下,将该文件夹下的文件上传至服务器 指定目录下 保存.
    docker 部署spring boot 前后端项目_第1张图片

  2. 创建nginx启动配置文件:
    服务器创建nginx 配置文件:nginx.conf
    文件内容:

#user root;

worker_processes  1;
 
#pid        logs/nginx.pid;
 
events {
 
    worker_connections  1024;
 
}
 
http {
 
    include       mime.types;
 
    default_type  application/octet-stream;
 
    sendfile        on;
 
    keepalive_timeout  65;
 
    server {
 
        listen       80;
 
        server_name  172.0.0.11;
 
        location / { 
	            root   /usr/share/nginx/html; 
	            index  index.html index.htm; 
	            try_files $uri $uri/ /index.html; 
			} 
			
	      location ^~ /dev-api/ { 
	       	proxy_pass http://172.0.0.11:8080/; 
	       }
	 
    }
 
}

这里新增一个 location , 对应vue项目中的请求前缀;该location 将前端请求转发至 proxy_pass 对应的主机上; vue请求前缀 一般配置在 项目的 vue.config.js 中:
docker 部署spring boot 前后端项目_第2张图片
4. 启用nginx容器:
docker run --name ry_nginx -v /vdc/nginx/config/nginx.conf:/etc/nginx/nginx.conf -v /vdc/project/ruoyi_web:/usr/share/nginx/html:ro -d -p 18000:80 nginx

/vdc/nginx/config/nginx.conf 上文nginx文件存放路径;
/vdc/project/ruoyi_web 项目编译后的文件存放路径;
后续程序更新时只需更新 ruoyi_web 下的文件就可以了。

你可能感兴趣的:(docker,spring,nginx)