系统需求
-
JDK >= 1.8
-
MySQL >= 5.7
-
Maven >= 3.0
-
Node >= 12
-
Redis >= 3
思路
前端服务器 nginx
后端服务器+代码打包 java、maven、node
数据库/缓存 mysql、redis
开始
创建目录ruoyi并进入
克隆若依代码
git clone RuoYi-Vue: 🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
拉取node镜像
docker pull node:12.18.0
运行映射若依页面显示的目录到容器的opt目录下
docker run -it --rm -v ./ruoyi-ui/:/opt node:12.18.0 /bin/bash
进入容器后进入 /opt目录
前端代码构建
npm install
构建后打包 默认为dist
npm run build:prod
退出容器到本地查看
修改mysql的连接配置
vim ruoyi/RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml
修改redis连接配置
vim ruoyi/RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml
拉取maven镜像
docker pull maven:3.8.8
本地移动到ruoyi目录下
运行映射若依后端目录到容器的vue目录下
docker run -it --rm -v ./RuoYi-Vue:/vue maven:3.8.8 /bin/bash
进入容器的/vue目录构建打包后端
mvn package
退出查看
在ruoyi目录下创建java目录
将打包好的后端代码目录中的 jar包拷贝到ruoyi目录下的Java目录下 并创建Dockerfile文件
编辑Dockerfile文件
#父镜像
FROM centos:7
#下载jdk
RUN yum -y install java-1.8.0-openjdk
#cd到工作目录
WORKDIR /opt
#拷贝jar包至镜像内
COPY ./ruoyi-admin.jar /opt
#运行jar包
CMD ["java","-jar","ruoyi-admin.jar"]
拉取redis、mysql、nginx镜像
创建ruoyi-vue目录
将之前创建的java目录和后端RuoYi-Vue目录移动到其中
这里还需要拷贝一份nginx的配置文件到当前目录方便挂载到nginx容器中,内容为下
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
}
location /prod-api/ {
proxy_pass http://java:8080/; #对应docker-compose.ym文件中java的容器名
}
}
}
开始创建docker-compose.yml文件
编写文件内容
#nginx镜像启动并映射端口与数据关联目录 编写的本地nginx配置文件挂载到容器的/etc/nginx 链接java镜像 编排 设置字符集
version: '3'
services:
ruoyi-web:
image: nginx
container_name: ruoyi
hostname: ruoyi
environment:
- LANG=C.UTF-8
- LC_ALL=C.UTF-8
ports:
- 808:80
volumes:
- ./RuoYi-Vue/ruoyi-ui/dist/:/usr/share/nginx/html/
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- /mnt/nginx/log:/var/log/nginx
links:
- java
depends_on:
- java
#java镜像启动 链接数据镜像与redis镜像 编排
java:
build: ./java
container_name: ruoyi-java
hostname: ruoyi-java
links:
- db
- redis
depends_on:
- db
- redis
#数据库镜像启动配置环境变量 密码和数据库ry-vue 设置数据库字符集 映射数据目录 挂载sql语句文件到对应目录
db:
image: mysql:5.7
container_name: mysql.server
hostname: db
environment:
- MYSQL_ROOT_PASSWORD=Aa@123456
- MYSQL_DATABASE=ry-vue
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
volumes:
- /opt/mysql-data:/var/lib/mysql
- ./RuoYi-Vue/sql:/docker-entrypoint-initdb.d
#redis镜像启动
redis:
image: redis
container_name: redis.server
hostname: redis.server
开始部署
docker compose up
浏览器访问
希望能够帮助到大家!!!