docker学习记录-部署若依springcloud项目

使用docker compse部署RuoYi v3.6.4

一、打包代码

  1. Java代码

打包前需要将127.0.0.1改成宿主机ip, 使用docker部署的nacos,应该是要改成ruoyi-nacos(docker中的服务容器名)。

使用idea

window系统可能没有sh命令,不能执行sh copy.sh

打完包,需要在/RuoYi-Cloud/docker执行sh copy.sh,目的是将打的jar包放到docker里面的jar文件夹下。

不能执行sh copy.sh,需要仔细阅读以下文件,手动复制。

  1. vue代码
    ruoyi-ui的vue文件打完后/dist整个文件夹需要放到/RuoYi-Cloud/docker/nginx/html下
    ps:记得先安装依赖,依赖安装过的跳过。
bash 复制代码
# 安装依赖
npm install

使用命令打包

bash 复制代码
npm run build:prod

或者

二、Docker部署

ps:根据本人电脑已安装的软件,进行配置安装。需要安装docker和docker compose。

已安装:mysql、nacos、redis.

  1. nacos配置

    nacos的配置管理器是需要读取数据库的,也可以按官网的源文件docker-compose执行。

    需要修改连接mysql、redis的配置host,我改成自己的ip,修改mysql配置需要重启docker 对应服务的容器。

  2. 修改docker-compose.yml配置

    说明:

  • gateway网关地址8080改成了8085,在ruoyi-gateway/src/main/resources/bootstrap.yml修改,记得凡是改了yml都需要重新打包。
  • Nginx使用8087端口,这是基础镜像,对应前端访问的端口号,配置了什么,启动完成后就用这个8087访问静态资源。
  • docker-compose.yml文件会将没有的镜像自动下载,yml中不指定版本默认下载最新版本。
    说明:ruoyi-ui的vue文件打完包需要放到/RuoYi-Cloud/docker/nginx/html下
bash 复制代码
version : '3.8'
services:
  ruoyi-gateway:
    container_name: ruoyi-gateway
    build:
      context: ./gateway
      dockerfile: dockerfile
    ports:
      - "8085:8085"
  ruoyi-auth:
    container_name: ruoyi-auth
    build:
      context: ./auth
      dockerfile: dockerfile
    ports:
      - "9200:9200"
  ruoyi-modules-system:
    container_name: ruoyi-modules-system
    build:
      context: ./modules/system
      dockerfile: dockerfile
    ports:
      - "9201:9201"
  ruoyi-modules-gen:
    container_name: ruoyi-modules-gen
    build:
      context: ./modules/gen
      dockerfile: dockerfile
    ports:
      - "9202:9202"
  ruoyi-modules-job:
    container_name: ruoyi-modules-job
    build:
      context: ./modules/job
      dockerfile: dockerfile
    ports:
      - "9203:9203"
  ruoyi-modules-file:
    container_name: ruoyi-modules-file
    build:
      context: ./modules/file
      dockerfile: dockerfile
    ports:
      - "9300:9300"
    volumes:
    - ./uploadPath:/home/ruoyi/uploadPath
  ruoyi-nginx:
    container_name: ruoyi-nginx
    image: nginx
    build:
      context: ./nginx
    ports:
      - "8087:80"
    volumes:
      - ./nginx/html/dist:/home/ruoyi/projects/ruoyi-ui
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/logs:/var/log/nginx
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - ruoyi-gateway
    links:
      - ruoyi-gateway

nginx的配置文件

/RuoYi-Cloud/docker/nginx/conf/nginx.conf

http://ruoyi-gateway:8085/

  • ruoyi-gateway对应容器id
  • 8085改成自己gateway的配置
  1. Mysql设置允许通过ip访问(非docker的mysql)
    ps:解决ruoyi-system服务启动后,mysql连接不上问题
bash 复制代码
# 进入mysql
mysql -u root -p

# 执行以下命令
use mysql;

select user,host from user;

# 修改host字段,允许所有ip访问,也可以指定
update user set host='%' where host='localhost';

# 确认一下是不是修改成功了:
select user,host from user;

# 刷新一下
flush privileges;
  1. redis设置允许通过ip访问(非docker的redis)
    ps:解决ruoyi-gateway服务启动后,redis连接不上问题
bash 复制代码
# 1.修改配置文件
/opt/homebrew/etc/redis.conf

# 1.1修改内容
# 为了允许外部访问 Redis,需要将 bind 设置为 0.0.0.0
bind 0.0.0.0
# 值为yes表示开启远程保护,不允许本地以外访问
protected-mode yes


# 2.重启服务
brew services restart redis
  1. 启动docker-compose
    在docker-compose.yml下,执行
bash 复制代码
# 启动所有docker-compose服务并后台运行(一次性启动)
docker-compose up -d 

# 启动基础环境(指定)
docker-compose up -d ruoyi-mysql ruoyi-redis ruoyi-nacos

# 启动程序模块(指定)
docker-compose up -d ruoyi-nginx ruoyi-gateway ruoyi-auth ruoyi-modules-system

# 停止并删除容器、网络、卷、镜像。   
docker-compose down   

# 重启服务
docker-compose restart

# 重启服务单个
docker-compose restart [yml里面的服务id]
docker-compose restart nginx
docker-compose restart ruoyi-gateway

# 启动服务
docker-compose start     
# 停止服务,关闭所有环境/模块
docker-compose stop  
# 查看容器输出日志
docker-compose logs  yml里面的服务id  

# 删除所有环境/模块   
docker-compose rm    
  1. 完成
    http://localhost:8848/nacos
    nacos服务端口号8848,各个微服务启动成功后,会自动注册到nacos服务列表,注册成功后等几秒钟访问nginx服务的地址xxx.xx.xx.x:8087。
bash 复制代码
# 查看容器
docker ps -a
  1. 故障判断
  • 如果遇到对应ruoyi-xxx启动失败,怎么解决问题?
    首先需要知道出什么问题,查看日志。
    查看前端对应的服务接口,找到对应出错的服务,查看日志和idea运行类似,根据日志报错信息,网上找解决方案。
bash 复制代码
# 查看所有容器,包含运行失败的
docker ps -a
# 查看正运行的
docker ps
# 查看日志log看报错
docker logs [CONTAINER ID]
## 例如:认证授权中心出错,具体某个接口访问"内部服务器错误"
docker logs ruoyi-auth

docker logs ruoyi-gateway
## nginx,前端访问不了,需要nginx容器是否启动成功
docker logs nginx
相关推荐
骑着王八撵玉兔25 分钟前
【容器化技术 Docker 与微服务部署】详解
分布式·docker·微服务·中间件·容器·架构
千禧年@38 分钟前
Gateway服务网关
java·运维·gateway
阿松のblog42 分钟前
蓝桥杯JAVA刷题--001
android·java·蓝桥杯
猿java1 小时前
SpringBoot自动配置的8个宝藏技巧!
java·后端·面试
起个随便的昵称1 小时前
安卓入门一 Java基础
android·java·开发语言
dessler1 小时前
Docker-Harbor部署指南
linux·运维·docker
刘大猫261 小时前
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
大数据·人工智能·docker
爱干饭的boy2 小时前
教师管理系统
java·开发语言·c++·windows·python·青少年编程
顾北辰202 小时前
基本算法——分类
java·spring boot·机器学习
儒道易行2 小时前
【网络安全实验室】SQL注入实战详情
java·数据库·安全·web安全·网络安全