• Docker+Nginx打包部署Spring boot 项目


    后端打包(jar包):

     一、Docker文件编辑

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

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

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

    1. version: '3.7'
    2. services:
    3. app:
    4. build: ./app #若docker-compose文件与项目在同一文件夹下,此处需改为“./pingjiang/app”
    5. image: pingjiangone/app:latest # 从本地获取 image
    6. container_name: pingjiangone-app # Docker 中容器名称
    7. volumes:
    8. - /home/pingjiangone-logs:/logs # 参数,在 windows 部署需要更改为 windows 地址
    9. # - D:\logs\pingjiangone:/logs
    10. networks: # 容器中可以互通的 networks
    11. - backend
    12. environment: # 环境变量
    13. - TZ=Asia/shanghai
    14. # frontend:
    15. # build: ./pingjiangone-frontend
    16. # image: pingjiangone/frontend:latest
    17. # container_name: pingjiangone-frontend
    18. # networks:
    19. # - backend
    20. nginx:
    21. image: nginx:latest
    22. container_name: pingjiangone-nginx
    23. volumes:
    24. - ./nginx.conf:/etc/nginx/nginx.conf # nginx 配置文件
    25. - ./pingjiangfrontend:/home/www/pingjiangone-frontend # 前端映射模块,参考 nginx 配置文件
    26. ports:
    27. - 31005:8080 # 必须对外映射; # 默认 TCP,前者为对外映射的端口,后者为 docker 内占用端口
    28. restart: unless-stopped
    29. networks:
    30. - backend
    31. networks:
    32. backend:
    33. name: pingjiangone

    Nginx配置文件: 

    1. #全局块
    2. worker_processes 1; #nginx进程数,通常设置成和cpu的数量相等
    3. #event块
    4. # 设置允许每一个worker process同时开启的最大连接数,当每个工作进程接受的连接数超过这个值时将不再接收连接
    5. # 当所有的工作进程都接收满时,连接进入logback,logback满后连接被拒绝
    6. # 只能在events块中进行配置
    7. events { worker_connections 1024; }
    8. #http块
    9. http {
    10. #http全局块
    11. include /etc/nginx/mime.types; #文件扩展名与文件类型映射表
    12. sendfile on; # 开启关闭sendfile方式传输文件,可以在http块、server块或者location块中进行配置
    13. proxy_buffer_size 128k;
    14. proxy_buffers 4 256K;
    15. proxy_busy_buffers_size 256k;
    16. client_max_body_size 100m; #允许客户端请求的最大单文件字节数
    17. #server块
    18. server {
    19. listen 8080; # 监听端口
    20. #location块
    21. location / {
    22. root /home/www/pingjiangone-frontend; # path 为 / 时,转到 pingjiangone-frontend 前端
    23. }
    24. location /app/ { # path 为 /app/ 时
    25. resolver 127.0.0.11 ipv6=off;
    26. set $upstream pingjiangone-app:8090; # 转到 pingjiangone-app 模块,端口为此模块的端口号
    27. proxy_pass http://$upstream; #请求转向pingjiangone-app 定义的服务器列表
    28. proxy_redirect off;
    29. proxy_set_header Host $host; #以下是一些反向代理的配置,可选。
    30. proxy_set_header X-Real-IP $remote_addr;
    31. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
    32. proxy_set_header X-Forwarded-Host $server_name;
    33. }
    34. }
    35. #这边可以有多个server块
    36. server { # 第二个监听端口
    37. listen 8443;
    38. }
    39. }

    二、打包部署

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

    mvn clean package -P docker -DskipTests

     成功之后运行命令

    docker compose up

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

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

    端口为Nginx映射的端口。

  • 相关阅读:
    C51单片机IIC协议的应用
    贪心算法-总概
    国庆假期买哪款耳机好?国庆假期必备蓝牙耳机推荐
    B树和B+树
    贝赛尔曲线 - Vue3实现加入购物车抛物线效果组件
    Flutter通过Pigeon插件与Android同步异步交互
    小程序开发.概述与环境搭建
    工信部数据传输安全形势和挑战
    oracle报错 ORA-02290: 违反检查约束条件问题
    Spark 中 Aggregate 的实现
  • 原文地址:https://blog.csdn.net/gp_911014/article/details/126952802