1. 安装MYSQL与Redis
这里使用的是 mariadb 镜像,并且将 mariadb 数据库文件挂载到宿主机的 /home/mysql/ 目录下
-p 3310:3306的含义是将docker容器的端口3306映射到主机的端口3310 上
MYSQL_ROOT_PASSWORD=123456是指创建数据库时候的密码
–name RuoYi_Mysql是指创建数据库的名字
docker run -v /home/mysql/:/var/lib/mysql \
-p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 \
--privileged=true --restart=always --name RuoYi_Mysql -d mariadb
创建好数据Mysql之后,进入到RuoYi_Mysql容器中,使用直接将文件拖拽进xshell命令
apt-get update && apt-get install lrzsz
安装好这个命令后将已经写好的数据库文件ruoyi.sql文件拖拽进RuoYi_Mysql容器中,然后创建数据库ruoyi
mysql -u root -p
create database ruoyi;
use ruoyi;
//执行ruoyi.sql文件
mysql> source /ruoyi.sql
//查看结果
show tables;
安装Redis
docker run -itd --name redis --restart=always -p 6379:6379 redis
2. 构建ruoyi后端镜像并创建容器
将后端项目打包,在服务器/home目录下创建ruoyi目录,将ruoyi-admin.jar放到/home/ruoyi下,并编写Dockerfile文件
FROM java:8
ARG JAR_FILE=./*.jar
COPY ${JAR_FILE} app.jar
ENV TZ=Asia/Shanghai
ENTRYPOINT ["java","-jar","/app.jar"]
构建镜像,注意构建镜像的时候后面有一个实心的小圆点
docker build -t ruoyi .
创建后端容器
将容器中的 /home/ruoyi/ 挂载到宿主机的 /home/ruoyidata/ 目录并且设置数据库地址与密码等环境变量参数
-p 8180:8180
-e DB_HOST=10.111.51.110因为数据库是在docker中创建的,将端口8180映射到了主机的8180端口,所以这里填写主机的地址就可以访问到上面创建好的数据库,下面的redis同理
docker run -d \
--name ruoyi --restart always \
-p 8180:8180 \
-e "TZ=Asia/Shanghai" \
-e DB_HOST=10.111.51.110 \
-e DB_PWD=123456 \
-e REDIS_HOST=10.111.51.110 \
-v /home/ruoyidata/:/home/ruoyi/ \
ruoyi
3. 安装与配置Nginx容器
创建nginx容器
- /home/nginx/conf.d 用于存放配置文件
- /home/nginx/cert 用于存放 https 证书
- /home/nginx/html 用于存放网页文件
- /home/nginx/logs 用于存放日志
docker run -d \
--name nginx --restart always \
-p 80:80 -p 443:443 \
-e "TZ=Asia/Shanghai" \
-v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/logs:/var/log/nginx \
-v /home/nginx/cert:/etc/nginx/cert \
-v /home/nginx/html:/usr/share/nginx/html \
nginx:alpine
创建这个docker的时候可能会报错,原因是这句话 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf
/home/nginx/nginx.conf 下的 nginx.conf 是一个文件夹,所以删掉nginx.conf,然后按下面的方法做,也就是创建了一个新的nginx docker容器,然后把里面的nginx.conf复制到home/nginx中代替原来的nginx.conf
docker run --name test -d nginx
docker cp test:/etc/nginx/nginx.conf /home/nginx/
配置Nginx
在宿主机目录/home/nginx/conf.d
中创建ruoyi.conf文件
sudo vim ruoyi.conf
写入如下内容
server
{
listen 80;
server_name 10.111.51.110;
location / {
root /usr/share/nginx/html/ruoyi/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html?s=$uri&$args;
error_page 405 =200 http://$host$request_uri;
}
location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For &proxy_add_x_forwarded_for;
proxy_pass http://10.111.51.110:8180/;
}
}
将前端打包好的项目dist文件放到宿主机 /home/nginx/html/ruoyi
目录下,然后重启nginx容器
docker restart nginx
注意:容器中/usr/share/nginx/html/ruoyi/dist 对应宿主机的 /home/nginx/html/ruoyi/dist 目录,因此文件上传到宿主机的目录即可