前置Docker知识

docker保姆级入门教程(3小时速通)https://blog.csdn.net/TinpeaV/article/details/151855623?spm=1001.2014.3001.5501

1、操作前准备

ruoyi-vue源码地址:

https://gitee.com/y_project/RuoYi-Vue

下载好源码后导入到你的IDEA中

(博主这里使用的是IDEA2024版)

2、开始操作

2.1 Ruoyi-vue修改配置文件

1、将url里的ip地址(localhost)修改成:mysql

#重要的事情说三遍,重要的事情说三遍,重要的事情说三遍,因为应用和数据库不在一个容器,这里写的是docker服务名称。

url: jdbc:mysql://mysql:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8

2、密码修改成你的数据库密码

tips:ruoyi的redis密码默认为空,建议设置,但是我这里是演示就不改太多

2.2 maven打包后端Jar包

有两种方式如下:

#项目内maven打包:

#ruoyi自带bat打包文件:

#打包好的jar位置:

2.3 webpack打包前端静态包

#如果你是首次打开ruoyi-ui需要先执行命令 npm install 

npm install --registry=https://registry.npmmirror.com

#执行npm run build:prod打包前端包

npm run build:prod

2.4 将安装好的jar包和dist前端静态文件放入Linux服务器目录下

我这里是放到了 /home/ruoyi/projects 目录下,我将dist文件名称修改成了ruoyi-ui

2.5 编写Dockerfile制作前端和后端的镜像

#先走到存放前后端的资源目录下

cd /home/ruoyi/projects

2.5.1 制作后端镜像

#编写后端的Dockerfile文件
vim dockerfile-backend

填入以下内容,然后wq保存退出:

FROM openjdk:17-jdk-slim
COPY ruoyi-admin.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
       fontconfig \
       fonts-dejavu \
    && fc-cache -fv \
    && rm -rf /var/lib/apt/lists/*

#构建后端镜像
docker build -f dockerfile-backend -t ruoyi-admin .

2.5.2 制作前端镜像

#新建nginx的配置文件,nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
		charset utf-8;

		location / {
            root   /home/ruoyi/projects/ruoyi-ui;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		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://ruoyi-admin:8080/;
		}

		# springdoc proxy
		location ~ ^/v3/api-docs/(.*) {
			proxy_pass http://ruoyi-admin:8080/v3/api-docs/$1;
		}

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
#编写前端的Dockerfile文件
vim dockerfile-frontend
FROM nginx:1.26.0
COPY ruoyi-ui /home/ruoyi/projects/ruoyi-ui
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
#构建前端镜像
docker build -f dockerfile-frontend -t ruoyi-ui .

2.5.3 检查镜像

2.6 编写docker-compose.yml文件

vim docker-compose.yml

复制填写以下代码,wq保存退出。

version: '3.9'
services:
  mysql:
    image: mysql:8.0
    container_name: ruoyi-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: ry-vue
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf:/etc/mysql/conf.d

  redis:
    image: redis:6.2
    container_name: ruoyi-redis
    restart: always
    ports:
      - "6379:6379"

  ruoyi-admin:
    image: ruoyi-admin
    container_name: ruoyi-admin
    restart: always
    depends_on:
      - mysql
      - redis
    ports:
      - "8080:8080"

  ruoyi-ui:
    image: ruoyi-ui
    container_name: ruoyi-ui
    restart: always
    depends_on:
      - ruoyi-admin
    ports:
      - "80:80"

2.7 使用compose命令,先启动mysql容器导入数据库

因为是第一次启动,一下子看到效果建议先启动mysql导入数据先。

docker compose up -d mysql

使用的数据库连接工具先连上mysql,导入ruoyi的数据库

2.8 使用compose命令,直接启动ruoyi-vue

截止到目前,你的linux目录下,应该有以下这些文件:

因为只有一个docker-compose文件,所以直接使用命令docker compose up -d启动

docker compose up -d

查看是否都启动成功:

激动人心的时刻到了,访问你的ip地址:

完结撒花~

有问题的小伙伴欢迎在评论区留言讨论~

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐