后端打包(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映射的端口。