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
相关推荐
长风破浪会有时呀10 分钟前
记一次接口优化历程 CountDownLatch
java
x县豆瓣酱16 分钟前
【第四节】ubuntu server安装docker
linux·ubuntu·docker
云朵大王35 分钟前
SQL 视图与事务知识点详解及练习题
java·大数据·数据库
我爱Jack1 小时前
深入解析 LinkedList
java·开发语言
伊成2 小时前
docker安装Consul笔记
笔记·docker·consul
27669582922 小时前
tiktok 弹幕 逆向分析
java·python·tiktok·tiktok弹幕·tiktok弹幕逆向分析·a-bogus·x-gnarly
用户40315986396632 小时前
多窗口事件分发系统
java·算法
用户40315986396633 小时前
ARP 缓存与报文转发模拟
java·算法
憨堡包^—^3 小时前
Docker —— MySQL主从复制集群
mysql·docker·容器
小林ixn3 小时前
大一新手小白跟黑马学习的第一个图形化项目:拼图小游戏(java)
java