后端打包:
一、Docker、Nginx相关文件编写
在子模块下增加Dockerfile文件,在项目根目录下增加docker-compose.yml文件和nginx.conf文件
Dockerfile文件内容:
FROM openjdk:11 //jdk版本
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
WORKDIR /
ENTRYPOINT ["java","-jar","/app.jar"]
docker-compose.yml文件内容:
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文件内容:
#允许生成的进程数,默认为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;
}
}
}
打包部署
1、后端根目录下运行命令:
mvn clean package -P docker -DskipTests
docker compose up
2、将前端打包后的dist文件夹中文件全移动到后端生成的前端静态文件夹中
3、浏览器访问localhost:31002即可。