ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

docker部署ruoyi项目

docker部署ruoyi项目 目录前言一、安装docker1.1环境1.2安装docker1.3配置镜像加速器二、获取ruoyi项目2.1拉取ruoyi项目2.2创建ruoyi-net网络三、MySQL3.1创建MySQL数据卷3.2运行MySQL并挂载数据卷四、redis4.1 创建Redis数据卷4.2运行Redis并挂载数据卷五、准备jar包5.1mvn镜像5.2修该配置5.3打包jar包5.4放置jar包六、构建镜像6.1编写Dockerfile6.2构建镜像6.3验证镜像七、前端部署7.1下载node7.2打包前端代码7.3创建运行nginx7.4检查ruoyi服务总结前言本文是一份详细的 Docker 化部署指南旨在帮助开发者将若依RuoYi前后端分离项目快速、一致地部署到生产或测试环境。通过容器化技术我们能够有效解决环境差异、依赖冲突等传统部署难题实现一键式部署与运维。教程将涵盖从 Docker 环境准备、项目获取、数据库与缓存服务部署到后端 Java 应用打包构建、前端静态资源打包以及最终通过 Nginx 提供服务的完整流程。每个步骤都配有清晰的命令和截图确保您可以跟随操作顺利完成部署。一、安装docker1.1环境centoOS7.9主机IP192.168.1.1111.2安装dockersudo yum install -y yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install docker-ce-20.10.18 docker-ce-cli-20.10.18 containerd.io systemctl start docker docker version1.3配置镜像加速器sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com, https://registry.cn-hangzhou.aliyuncs.com ] } EOF sudo systemctl daemon-reload sudo systemctl restart dockerdocker info验证二、获取ruoyi项目2.1拉取ruoyi项目git clone https://gitee.com/humajun/ruoyi.git2.2创建ruoyi-net网络docker network create ruoyi-net docker network ls三、MySQL3.1创建MySQL数据卷docker volume create mysql-data docker volume inspect mysql-data3.2运行MySQL并挂载数据卷docker run -d \ --name mysql.server \ --hostname db \ --network ruoyi-net \ -e MYSQL_ROOT_PASSWORD123456 \ -e MYSQL_DATABASEry-vue \ -e LANGC.UTF-8 \ -e LC_ALLC.UTF-8 \ -v /opt/mysql-data:/var/lib/mysql \ -v /opt/ruoyi/sql:/docker-entrypoint-initdb.d \ mysql:5.7 \ --character-set-serverutf8mb4 \ --collation-serverutf8mb4_general_ci验证卷挂载docker inspect mysql.server | grep -A 10 Mounts四、redis4.1 创建Redis数据卷docker volume create redis-data4.2运行Redis并挂载数据卷docker run -d \ --name redis-server \ --network ruoyi-net \ -p 6379:6379 \ -v redis-data:/data \ redis redis-server --appendonly yes查看docker ps | grep redis.server五、准备jar包5.1mvn镜像#拉取maven镜像 docker pull maven:3.6.3-openjdk-11 #宿主机提前创建目录假设源码放在 /opt/ruoyi/RuoYi-Vue mkdir -p /opt/ruoyi/java5.2修该配置cd ruoyi/ruoyi-admin/src/main/resources/cd ruoyi/ruoyi-admin/src/main/resources/ vim application-druid.yml vim application.yml修该redis地址修该mysql地址5.3打包jar包# 启动maven容器挂载宿主机源码目录到容器 /vue docker run -it --rm \ -v /opt/ruoyi:/vue \ maven:3.6.3-openjdk-11 /bin/bash #进入项目根目录 cd /vue maven打包跳过测试加快编译 mvn package -DskipTests #退出容器 exit成功如下5.4放置jar包退出maven容器将/opt/ruoyi/ruoyi-admin/target/ruoyi-admin.jar移到/ruoyi/java下cd /opt/ruoyi/ruoyi-admin/target/ mv ruoyi-admin.jar /opt/ruoyi/java/六、构建镜像6.1编写Dockerfilevim Dockerfile内容# 使用 OpenJDK 8 镜像 FROM eclipse-temurin:8-jre #设置时区 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo Asia/Shanghai /etc/timezone #设置容器内的工作目录为 /opt WORKDIR /opt #把当前目录下的 ruoyi-admin.jar 拷贝到容器的 /opt 目录 COPY ./ruoyi-admin.jar /opt #容器启动时执行的命令 CMD [ java,-jar,ruoyi-admin.jar ]6.2构建镜像docker build -t ruoyi-admin:1.0 .docker images | grep ruoyi-admin6.3验证镜像docker run -d \ --name java.server \ --network ruoyi-net \ -p 8080:8080 \ -e SPRING_DATASOURCE_URLjdbc:mysql://mysql.server:3306/ry-vue \ ruoyi-admin:1.0查看启动日志docker logs -f java.server七、前端部署7.1下载nodedocker pull node:127.2打包前端代码docker run -it --rm \ -v /opt/ruoyi/ruoyi-ui:/opt \ -w /opt \ node:12 \ /bin/bash -c npm install npm run build:prod # 确认产物 ls -la /opt/ruoyi/ruoyi-ui/dist/安装成功显示dist产生成功显示产物位置及dist内容7.3nginx在/opt/ruoyi/java目录下编辑nginx.conf内容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; try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_pass http://java.server:8080/; } } }创建运行nginxdocker run -d \ --name ruoyi-web \ --hostname ruoyi-web \ --network ruoyi-net \ -p 8888:80 \ -e LANGC.UTF-8 \ -e LC_ALLC.UTF-8 \ -v /opt/ruoyi/ruoyi-ui/dist:/usr/share/nginx/html \ -v /opt/ruoyi/java/nginx.conf:/etc/nginx/nginx.conf:ro \ nginx:1.25.3查看docker ps | grep ruoyi-web7.4检查ruoyi服务docker ps浏览器访问http://192.168.1.111:8888总结至此我们已经完成了 RuoYi 项目基于 Docker 的完整部署流程。回顾整个过程我们主要完成了以下几项核心工作环境标准化通过 Docker 统一了运行环境避免了因系统差异导致的部署问题。服务容器化将 MySQL、Redis、后端 Java 应用和前端 Nginx 服务分别容器化实现了服务的隔离与便捷管理。数据持久化为数据库和缓存服务配置了数据卷确保了容器重启后数据不丢失。网络互联创建了自定义的 Docker 网络使得各个服务容器能够在隔离的网络中相互通信。自动化构建利用 Maven 和 Node.js 的官方镜像在容器内完成了前后端代码的编译与打包保证了构建环境的一致性。后续优化建议可以考虑使用 Docker Compose 来编排所有服务通过一个docker-compose.yml文件实现一键启动和停止。为生产环境配置更完善的日志收集、监控告警和健康检查机制。结合 CI/CD 流水线实现代码提交后自动构建镜像并部署。希望这份指南能帮助您顺利部署 RuoYi 项目。如果在实践过程中遇到任何问题欢迎在评论区交流探讨。
返回列表