Docker+Nginx打包部署Spring boot 项目

后端打包(jar包):

 一、Docker文件编辑

1、后端启动类模块下增加“Dockerfile”文件,文件内容如下:

FROM openjdk:8-jre            //jdk版本
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
WORKDIR /
ENTRYPOINT ["java","-jar","/app.jar"]

2、项目根目录下增加“docker-compose.yml”文件和“nginx.conf”文件

version: '3.7'
services:
  app:
    build: ./app    #若docker-compose文件与项目在同一文件夹下,此处需改为“./pingjiang/app”
    image: pingjiangone/app:latest       # 从本地获取 image
    container_name: pingjiangone-app     # Docker 中容器名称
    volumes:
      - /home/pingjiangone-logs:/logs    # 参数,在 windows 部署需要更改为 windows 地址
#      - D:\logs\pingjiangone:/logs
    networks:                 # 容器中可以互通的 networks
      - backend
    environment:              # 环境变量
      - TZ=Asia/shanghai

#  frontend:
#    build: ./pingjiangone-frontend
#    image: pingjiangone/frontend:latest
#    container_name: pingjiangone-frontend
#    networks:
#      - backend

  nginx:
    image: nginx:latest
    container_name: pingjiangone-nginx
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf     # nginx 配置文件
      - ./pingjiangfrontend:/home/www/pingjiangone-frontend               # 前端映射模块,参考 nginx 配置文件
    ports:
      - 31005:8080                # 必须对外映射; # 默认 TCP,前者为对外映射的端口,后者为 docker 内占用端口
    restart: unless-stopped
    networks:
      - backend

networks:
  backend:
    name: pingjiangone

Nginx配置文件: 

#全局块
worker_processes 1; #nginx进程数,通常设置成和cpu的数量相等
#event块
# 设置允许每一个worker process同时开启的最大连接数,当每个工作进程接受的连接数超过这个值时将不再接收连接
# 当所有的工作进程都接收满时,连接进入logback,logback满后连接被拒绝
# 只能在events块中进行配置
events { worker_connections 1024; }
#http块
http {
    #http全局块
    include     /etc/nginx/mime.types;  #文件扩展名与文件类型映射表
    sendfile    on;        # 开启关闭sendfile方式传输文件,可以在http块、server块或者location块中进行配置

    proxy_buffer_size   128k;
    proxy_buffers     4 256K;
    proxy_busy_buffers_size   256k;

    client_max_body_size   100m; #允许客户端请求的最大单文件字节数

    #server块
    server {
        listen  8080;                                   # 监听端口

        #location块
        location / {
            root /home/www/pingjiangone-frontend;       # path 为 / 时,转到 pingjiangone-frontend 前端
        }
        location /app/ {                    # path 为 /app/ 时
            resolver 127.0.0.11 ipv6=off;
            set $upstream pingjiangone-app:8090;    # 转到 pingjiangone-app 模块,端口为此模块的端口号
            proxy_pass         http://$upstream;    #请求转向pingjiangone-app 定义的服务器列表
            proxy_redirect     off;
            proxy_set_header   Host $host;  #以下是一些反向代理的配置,可选。
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;  #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            proxy_set_header   X-Forwarded-Host $server_name;
        }
    }
    #这边可以有多个server块
    server {                # 第二个监听端口
        listen 8443;
    }
}

二、打包部署

在项目根目录下运行(在有docker-compose文件的目录):

mvn clean package -P docker -DskipTests

 成功之后运行命令

docker compose up

后端项目根目录下会生成存放前端静态资源的文件夹,后续将前端打包完的“dist”文件夹下的静态资源存放至后端生成的文件夹即可。

启动docker中的项目,浏览器访问:localhost:31005即可。

端口为Nginx映射的端口。

猜你喜欢

转载自blog.csdn.net/gp_911014/article/details/126952802