Docker+Nginx package deployment Spring Cloud project

Backend packaging:

1. Documentation related to Docker and Nginx

Add the Dockerfile file under the submodule , add the docker-compose.yml file and the nginx.conf file
insert image description hereinsert image description here
Dockerfile file content under the project root directory :

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

content of docker-compose.yml file:

version: "3.7"
services:
  redis:
    image: redis:alpine
    container_name: cygnus-redis
#    ports:		# 暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。			
#      - 6379:6379
    networks:				# 配置容器连接的网络。
      - backend
    environment:			# 设置环境变量。你可以使用数组或字典两种格式。
      - TZ=Asia/Shanghai
    restart: unless-stopped		# 指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped。

  eureka:
    build: ./eureka
    image: cygnus/eureka:latest
    container_name: cygnus-eureka
    volumes:     # 数据卷所挂载路径设置。可以设置为宿主机路径(HOST:CONTAINER)或者数据卷名称(VOLUME:CONTAINER),并且可以设置访问模式 (HOST:CONTAINER:ro)。
该指令中路径支持相对路径。
      - D:\logs\cygnus_eureka:/logs
    networks:
      - backend
    ports:
      - 8761:8761
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped

  user:
    build: ./user
    image: cygnus/user:latestdoc
    container_name: cygnus-user
    volumes:
      - D:\logs\cygnus_user:/logs
    networks:
      - backend
#    ports:
#      - 8085:8085
    depends_on:   # 解决容器的依赖、启动先后的问题。先启动eureka redis再启动user。注意:user服务不会等待eureka redis [完全启动]之后才启动
      - redis
      - eureka
    environment:
      - TZ=Asia/Shanghai

  device-mgmt:
    build: ./device-mgmt
    image: cygnus/device-mgmt:latest
    container_name: cygnus-device-mgmt
    volumes:
      - D:\logs\cygnus_device_mgmt:/logs
    networks:
      - backend
#    ports:
#      - 8084:8084
    depends_on:
        - redis
        - eureka
    environment:
      - TZ=Asia/Shanghai

  workflow:
    build: ./workflow
    image: cygnus/workflow:latest
    container_name: cygnus-workflow
    volumes:
      - D:\logs\cygnus_workflow:/logs
    networks:
      - backend
#    ports:
#      - 8087:8087
    depends_on:
      - redis
      - eureka
    environment:
      - TZ=Asia/Shanghai

  files:
    build: ./files
    image: cygnus/files:latest
    container_name: cygnus-files
    volumes:
      - D:\logs\cygnus_files:/logs
      - D:\testFiles:/uploadFiles
    networks:
      - backend
#    ports:
#      - 8086:8086
    depends_on:
      - redis
      - eureka
    environment:
      - TZ=Asia/Shanghai

#  api:
#    build: ./api
#    image: cygnus/api:latest
#    container_name: cygnus-api
#    volumes:
#      - D:\logs\cygnus_api:/logs
#    networks:
#      - backend
#    ports:
#      - 8080:8080
#    depends_on:
#      - redis
#      - eureka
#    environment:
#      - TZ=Asia/Shanghai

  handover-review:
    build: ./handover-review
    image: cygnus/handover-review:latest
    container_name: cygnus-handover-review
    volumes:
      - D:\logs\cygnus_handover_review:/logs
    networks:
      - backend
#    ports:
#      - 8088:8088
    depends_on:
      - redis
      - eureka
    environment:
      - TZ=Asia/Shanghai

  statistical-analysis:
    build: ./statistical-analysis
    image: cygnus/statistical-analysis:latest
    container_name: cygnus-statistical-analysis
    volumes:
      - D:\logs\cygnus_statistical_analysis:/logs
    networks:
      - backend
    #    ports:
    #      - 8089:8089
    depends_on:
      - redis
      - eureka
    environment:
      - TZ=Asia/Shanghai

  # nginx 配置
  nginx:
    image: nginx:latest
    container_name: new-cygnus-nginx
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./frontend:/home/www/new-cygnus-frontend  # 静态资源路径 : nginx.cong中配置的路由跳转路径
    ports:
      - 31002:8080  # 对外暴露的端口 : 内部占用端口(即nginx监听端口)
    restart: unless-stopped
    networks:
      - backend

networks:
  backend:
    name: cygnus

nginx.conf file content:

#允许生成的进程数,默认为1
worker_processes 1;

events {
    
    
    #每个进程的最大连接数,默认为512
    worker_connections 1024;
    }

http {
    
    
    #文件扩展名与文件类型映射表
    include    /etc/nginx/mime.types;
    #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile   on;

    # 代理缓冲区
    proxy_buffer_size   128k;
    proxy_buffers   4 256k;
    proxy_busy_buffers_size   256k;

    client_max_body_size   100m;

    server {
    
    
        listen 8080; #监听端口

        location / {
    
     # 请求的url过滤
            # 对应docker-compose.yml文件中的配置(nginx:volumes)
            root /home/www/new-cygnus-frontend;
        }
        location /device-mgmt/ {
    
     # 前端定义的路径
            resolver 127.0.0.11 ipv6=off;
            # 对应docker-compose.yml文件中的配置(bridge-files 容器名可代表IP)8086代表后端模块端口
            set $upstream cygnus-device-mgmt:8084;
            proxy_pass         http://$upstream;
            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;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
        location /files/ {
    
     # 前端定义的路径
            resolver 127.0.0.11 ipv6=off;
            # 对应docker-compose.yml文件中的配置(bridge-files 容器名可代表IP)8086代表后端模块端口
            set $upstream cygnus-files:8086;
            proxy_pass         http://$upstream;
            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;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
        location /handover-review/ {
    
    
            resolver 127.0.0.11 ipv6=off;
            set $upstream cygnus-handover-review:8088;
            proxy_pass         http://$upstream;
            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;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
        location /statistical-analysis/ {
    
    
            resolver 127.0.0.11 ipv6=off;
            set $upstream cygnus-statistical-analysis:8089;
            proxy_pass         http://$upstream;
            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;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
        location /user/ {
    
    
            resolver 127.0.0.11 ipv6=off;
            set $upstream cygnus-user:8085;
            proxy_pass         http://$upstream;
            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;
            proxy_set_header   X-Forwarded-Host $server_name;
       }
       location /workflow/ {
    
    
            resolver 127.0.0.11 ipv6=off;
            set $upstream cygnus-workflow:8087;
            proxy_pass         http://$upstream;
            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;
            proxy_set_header   X-Forwarded-Host $server_name;
       }
    }
}

package deployment

1. Run the command in the root directory of the backend:

mvn clean package -P docker -DskipTests
docker compose up

2. Move all the files in the dist folder after the front-end package to the front-end static folder generated by the back-end.
3. Just visit localhost:31002 with the browser.

Guess you like

Origin blog.csdn.net/gp_911014/article/details/126953591