系统需求

  • JDK >= 1.8

  • MySQL >= 5.7

  • Maven >= 3.0

  • Node >= 12

  • Redis >= 3

思路

前端服务器 nginx

后端服务器+代码打包 java、maven、node

数据库/缓存 mysql、redis

开始

创建目录ruoyi并进入

克隆若依代码

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

RuoYi-Vue: 🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本

拉取node镜像

docker pull node:12.18.0

运行映射若依页面显示的目录到容器的opt目录下

cd RuoYi-Vue
docker run -it --rm -v ./ruoyi-ui/:/opt node:12.18.0 /bin/bash

进入容器后进入 /opt目录

前端代码构建

npm install

构建后打包 默认为dist

npm run build:prod

退出容器到本地查看

cd ./ruoyi-ui

ls

修改mysql的连接配置

vim /root/ruoyi/RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml

修改redis连接配置

vim /root/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

退出查看

cd /root/ruoyi/Ru yi-Vue/ruoyi-admin      

 后端打包好默认目录为target

在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文件

        编写文件内容

vim 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

浏览器访问

希望能够帮助到大家!!!

GitHub 加速计划 / compose / compose
33.26 K
5.15 K
下载
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
最近提交(Master分支:2 个月前 )
82417bd5 Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com> 1 天前
0cbb73c0 Updated the error message when a network is found with an incorrect label to also display the expected label value. This provides more context for debugging. Signed-off-by: divinity76 <hans@loltek.net> 2 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐