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映射的端口。