一、Docker 安装
1、子模块Dockerfile
// 选取打包后的jar
FROM openjdk:8-jre // jdk版本
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
WORKDIR /
ENTRYPOINT ["java","-jar","/app.jar"]
2、父模块配置
version: "3.7"
services:
redis:
image: redis:latest // 从DockerHub获取image
container_name: bridge-redis // Docker中容器名称
networks: // 容器中可以互通的networks
- backend
environment: // 环境变量
- TZ=Asia/Shanghai
kurento-server:
image: kurento/kurento-media-server:latest
container_name: bridge-kurento-server
networks:
- backend
ports:
- "38888:8888" // 默认TCP,前者为对外映射的端口,后者为docker内占用端口
- "25000-25050:5000-5050/udp" // UDP,占用50个端口
environment:
- TZ=Asia/Shanghai
- KMS_MIN_PORT=5000
- KMS_MAX_PORT=5050
files:
build: ./files // 从本地获取image
image: bridge/files:latest
container_name: bridge-files
volumes:
- D:\logs\bridge_files:/logs // 参数,在linux部署需要更改为Linux地址
- D:\testFiles:/uploadFiles
networks:
- backend
# ports: // 不对外映射端口,根据模块配置占用端口
# - "3086:8086"
environment:
- TZ=Asia/Shanghai
nginx:
image: nginx
container_name: bridge-nginx
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf // nginx配置文件
- ./frontend:/home/www/bridge-frontend // 前端映射模块,参考nginx配置文件
ports: // 必须对外映射
- 38080:8080
restart: unless-stopped
networks:
- backend
networks:
backend:
name: bridgeMonitor
3、Nginx配置
worker_processes 1;
events { worker_connections 1024; }
http {
include /etc/nginx/mime.types;
sendfile on;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
client_max_body_size 100m;
server {
listen 8080; // 监听端口
location / {
root /home/www/bridge-frontend; // path为 / 时,转到bridge-frontend前端
}
location /files/ { // path为 /files/ 时
resolver 127.0.0.11 ipv6=off;
set $upstream bridge-files:8086; // 转到 bridge-files 模块
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/ { // path为 /user/ 时
resolver 127.0.0.11 ipv6=off;
set $upstream bridge-user:8085; // 转到 bridge-user 模块
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;
}
}
server{ // 第二个监听端口
listen 8443
}
}
三、部署
1、后端根目录下打开cmd运行
mvn clean package -P docker -DskipTests
2、前端目录下cmd运行
// name 为build后的image 名,需要与配置文件中一致
docker build -t name .
3、将前端build后的dist文件下的所有文件移动到后端目录下的前端文件夹根目录下
4、后端根目录下打开cmd运行
// 自动创建并将多个image关联起来,并启动
docker compose up
// -d 后台运行
docker compose up -d