首页 > 系统相关 >ruoyi-cloud微服务在Linux中使用docker-compose部署

ruoyi-cloud微服务在Linux中使用docker-compose部署

时间:2023-02-08 13:35:40浏览次数:67  
标签:compose Linux nacos ruoyi nginx sh mysql docker

ruoyi-cloud微服务docker-compose部署

前置说明

**在本地安装虚拟机请务必给虚拟机分配足够内存!!!,**否则服务可能会在启动中挂掉

分配4G内存我这边是够的,具体需要分配多少内存请根据实际情况加上微服务数量来分配内存
在这里插入图片描述

搭建服务中常用的命令

docker中常用的命令

docker images		#查看镜像
docker ps			#查看正在运行的容器
docker ps -a		#查看所有容器(包括运行和停止)
 
  • 1
  • 2
  • 3

docker-compose命令

#以下命令需安装完docker-compose后方可执行查看效果
docker-compose logs		#查看启动服务所打印的日志
docker-compose logs -f 	#跟踪启动服务的日志打印
docker-compose up -d	# 后台启动
 
  • 1
  • 2
  • 3
  • 4

端口侦听

netstat -luntp			#查看所有服务启动后端口是否被侦听*这个很重要*
 
  • 1

Docker 环境安装

安装所需的软件包

yum install -y yum-utils
 
  • 1

设置存储库

# 阿里云地址(国内地址,相对更快)
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
  • 1
  • 2
  • 3
  • 4

安装Docker引擎

yum install docker-ce docker-ce-cli containerd.io
 
  • 1

安装完成后,运行下面的命令,验证是否安装成功。

docker version # 查看Docker版本信息

systemctl start docker		# 启动 docker 服务:
systemctl stop docker		# 停止 docker 服务:
systemctl status docker		# 查看 docker 服务状态
systemctl restart docker	# 重启 docker 服务
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

配置镜像

使用配置文件/etc/docker/daemon.json(没有时新建该文件)

vim /etc/docker/daemon.json
# 添加如下内容,可以自己替换。默认地址是我的创建的
{
  "registry-mirrors": ["https://mr63yffu.mirror.aliyuncs.com"]
}
 
  • 1
  • 2
  • 3
  • 4
  • 5

重启Docker Daemon即可

systemctl daemon-reload
 
  • 1

应用部署

Nacos

拉取官方nacos镜像
在这里插入图片描述

目前若依微服务最新版本需要安装的是2.0.4版本,如需更改请根据实际情况修改拉取的版本号

docker pull nacos/nacos-server:v2.0.4
 
  • 1

启动nacos 需要暴露8848 9848 9849 端口
在这里插入图片描述

docker run --env MODE=standalone --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 nacos/nacos-server:v2.0.4
 
  • 1

MODE=standalone表示单机启动

Nginx

拉取官方nginx镜像,默认拉取最新版本

docker pull nginx
 
  • 1

创建Nginx容器。

docker run -di --name nginx -p 80:80 nginx
 
  • 1

将容器内的配置文件拷贝到指定目录(请先提前创建好目录)。

# 创建目录
mkdir -p /home/ruoyi/nginx

# 将容器内的配置文件拷贝到指定目录
docker cp nginx:/etc/nginx /home/ruoyi/nginx/conf
 
  • 1
  • 2
  • 3
  • 4
  • 5

终止并删除容器 需要执行

docker stop nginx
docker rm nginx
 
  • 1
  • 2

创建Nginx容器,并将容器中的/etc/nginx目录和宿主机的/home/ruoyi/nginx/conf目录进行挂载。

docker run -di --name nginx -p 80:80 -v /home/ruoyi/nginx/conf:/etc/nginx nginx
 
  • 1

Mysql

拉取官方mysql8.0镜像

docker pull mysql:8.0
 
  • 1

在本地创建mysql的映射目录

mkdir -p /home/mysql/data /home/mysql/logs /home/mysql/conf
 
  • 1

创建容器,将数据、日志、配置文件映射到本机

#此处的password为即将设置的数据库密码建议修改成为自己的密码
docker run -p 3306:3306 --name mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
 
  • 1
  • 2

进入容器/执行命令:docker exec -it mysql /bin/bash

更改数据库密码

docker exec -it mysql /bin/bash		#未挂载镜像时进入MySQL方式
//docker exec -it 122c297e7298 bash  #挂载后进入容器方式,容器id 使用此命令进入mysql需要先执行docker ps 找到mysql镜像id
mysql -uroot -p
use mysql
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
flush privileges;
exit
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

未挂载docker镜像时可以使用以这种方式进入MySQL

#如需本地navicat连接需要配置访问规则
docker exec -it mysql /bin/bash			
mysql -uroot -p
use mysql
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; #修改密码
flush privileges; #刷新数据
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

已挂载docker镜像

docker ps			#找到mysql镜像id
docker exec -it MySQL镜像ID bash
mysql -uroot -p
use mysql
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; #修改密码
flush privileges; #刷新数据
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Redis

拉取官方redis镜像

docker pull redis
 
  • 1

创建容器

docker run -di --name redis -p 6379:6379 redis
 
  • 1

连接容器中的Redis时,只需要连接宿主机的IP + 指定的映射端口即可。

Compose 安装

下载

# 因为Docker Compose存放在GitHub,可能不太稳定。可以通过DaoCloud加速下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
 
  • 1
  • 2

授权

# 将可执行权限应用于该二进制文件
sudo chmod +x /usr/local/bin/docker-compose
 
  • 1
  • 2

测试

docker-compose --version
 
  • 1

卸载谨慎操作,此处仅提供卸载方法,如有需要可执行此命令

rm /usr/local/bin/docker-compose
 
  • 1

配置docker目录下的文件 很重要

服务打jar

在运行代码正常无bug情况下开始打包操作

首先将所有服务停止

在这里插入图片描述

maven执行clean操作(请保证执行clean操作是在ruoyi(root)里进行操作)

在这里插入图片描述

在这里插入图片描述

如果clean操作target包未被删除执行以下操作

在这里插入图片描述

在这里插入图片描述

清除缓存重启idea成功后重复上述操作

修改bootstrap.yml配置文件[这里非常重要]

在这里插入图片描述

其他服务bootstrap.yml配置与auth保持一致

ruoyi-gateway如不需要使用sentinel可以将此处注释

在这里插入图片描述

将所有模块配置完成后进行mavenjar包操作(在模块未运行的情况下进行打包操作)

在这里插入图片描述

执行完毕可以看到所在模块下已经生成target文件了

在这里插入图片描述

操作docker/ruoyi

将生成的jar包放入若依自带的docker文件夹指定目录

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其余文件夹jar包操作参考上文

在docker文件夹下ruoyi目录的操作到此为止dockerfile文件无需进行操作

在这里插入图片描述

操作docker/mysql

将SQL文件导出至此文件夹目录下

在这里插入图片描述

因为我们在docker里面安装的是mysql8.0版本所以下面需要进行修改一下配置

在这里插入图片描述

在这里插入图片描述

操作docker/nacos

进入此目录编辑nacos配置文件

在这里插入图片描述

在这里插入图片描述

编辑docker/nacosdockerfile文件

在这里插入图片描述

将默认状态修改为指定nacos版本此处如果不做配置nacos启动时会再次拉取nacos镜像最新版本

在这里插入图片描述

操作docker\nginx\conf

编辑这个文件

在这里插入图片描述

建议使用默认配置

在这里插入图片描述

因为我们在docker中拉取的是nginx最新版本索引nginx的dockerfile不需要进行修改操作

操作docker\nginx\html\dist这个文件

此处将前端代码打包,只介绍在idea打包方式,前端项目打包可让前端进行打包

进入ruoyi-ui目录

在这里插入图片描述

执行npm run build:prod命令,[执行此命令前置操作下载前端依赖需执行npm install --registry=https://registry.npm.taobao.org命令]

在这里插入图片描述

在这里插入图片描述

docker/redis无需进行操作

操作dockerdocker-compose.yml文件

编辑此文件

因为拉去的nacos镜像为2.0.4版本,mysql镜像为8.0版本索引进行以下操作

在这里插入图片描述

在这里插入图片描述

将docker文件夹上传至linux

上传docker文件

在这里插入图片描述

启动服务

首先禁用防火墙

1、命令行界面输入命令“systemctl status firewalld.service”并按下回车键。

systemctl status firewalld.service
 
  • 1

2、然后在下方可度以查看得到“active(running)”,此时说明防火墙已经被打开了。

3、在命令行中输入systemctl stop firewalld.service命令,进行关闭防火墙。

systemctl stop firewalld.service
 
  • 1

4、然后再使用命令systemctl status firewalld.service,在下方出现disavtive(dead),这权样就说明防火墙已经关闭。

5、再在命令行中输入命令“systemctl disable firewalld.service”命令,即可永久关闭防火墙。

systemctl disable firewalld.service
 
  • 1

查看docker日志

# 输出日志,不同的服务输出使用不同的颜色来区分
docker-compose logs
# 跟踪日志输出
docker-compose logs -f
# 关闭颜色
docker-compose logs --no-color
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

运行服务

查看所侦听的端口

netstat -luntp			#用于查看服务端口是否被侦听
 
  • 1
cd /home/docker/		#进入docker文件所在目录

./deploy.sh port		# 开启所需端口	因为在之前已经关闭防火墙,此命令无需执行
	
#注意执行完此命令后请执行	docker-compose logs -f 	#跟踪启动服务的日志打印 
#如有报错说明配置有误,请先解决完报错保证nacos,mysql,redis启动成功
./deploy.sh base		# 启动基础环境(必须)
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

nacos启动成功

在这里插入图片描述

连接nacos

IP地址为虚拟机IP地址

http://192.168.136.135:8848/nacos
 
  • 1

访问成功

在这里插入图片描述

编辑nacos配置
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

此处仅介绍system配置,其他配置参考system配置即可

测试mysql连接

在这里插入图片描述

测试redis连接

在这里插入图片描述

配置完成后执行下面命令保证修改后的配置能够被服务读取

./deploy.sh stop		# 关闭所有环境/模块		重启服务时执行此操作保证修改的配置被读取

./deploy.sh rm			# 删除所有环境/模块		重启服务时执行此操作保证修改的配置被读取
 
  • 1
  • 2
  • 3

启动服务

执行完以上命令后再次执行以下命令

./deploy.sh base		#执行完此命令请等待两分钟保证nacos,mysql,redis成功启动后执行后续命令

./deploy.sh modules		# 启动程序模块(必须)base命令成功启动完服务后执行此命令
 
  • 1
  • 2
  • 3

执行完./deploy.sh base命令后在linux中查看正在运行的容器,以下为成功启动并运行

在这里插入图片描述

执行./deploy.sh modules命令后请及时 跟进日志打印查看服务是否启动成功

在这里插入图片描述

在这里插入图片描述

服务启动成功

浏览器访问http://192.168.136.135 IP地址为虚拟机IP地址,默认访问80端口

在这里插入图片描述

在这里插入图片描述

报错问题解决

运行.sh报错-bash: ./xxx.sh: Permission denied处理

在这里插入图片描述

如果你是root登陆的话(不是的话,切换到root用户,对*.sh赋可执行的权限)

chmod +x  *.sh			#执行此命令
 
  • 1

执行./deploy.sh base 后查看日志[docker-compose logs]nacos出现mbind: Operation not permitted

在这里插入图片描述

参考链接:https://blog.csdn.net/liuyunshengsir/article/details/123197825

在[mysqld]的段中加上一句:skip-name-resolve

vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-name-resolve
 
  • 1
  • 2
  • 3
  • 4
  • 5

重启mysql即可

//重启mysql步骤
docker ps		//查看当前正在运行的容器
//找到mysql的镜像id
docker restart 镜像id
 
  • 1
  • 2
  • 3
  • 4

执行./deploy.sh basemysql显示[Warning] IP address ‘xxxx’ could not be resolved: Name or service not known错误解决

在这里插入图片描述

参考链接:https://blog.csdn.net/u013591306/article/details/77602553

进入/etc 找到mysql的配置文件my.cnf(linux环境下)或者my.ini(windows环境下)进行编辑加入如下一行即可:

[mysqld]
skip-name-resolve
 
  • 1
  • 2
  • 3
  • 4

执行./deploy.sh modules出现此报错 在这里插入图片描述

请参考https://blog.51cto.com/u_14832233/3988418

通过重启 docker 服务解决这个问题 注意重启docker之后base服务会被停止需重新执行7.1启动服务

service docker restart			#重启 docker 服务
 
  • 1

使用mysql8.0执行./deploy.sh base命令如果遇到Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not错误

参考链接:https://liuhuanhuan.blog.csdn.net/article/details/116583828?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&utm_relevant_index=2

编辑nacos配置文件

8418

通过重启 docker 服务解决这个问题 注意重启docker之后base服务会被停止需重新执行7.1启动服务

service docker restart			#重启 docker 服务
 
  • 1

使用mysql8.0执行./deploy.sh base命令如果遇到Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not错误

参考链接:https://liuhuanhuan.blog.csdn.net/article/details/116583828?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&utm_relevant_index=2

编辑nacos配置文件

在这里插入图片描述

 

标签:compose,Linux,nacos,ruoyi,nginx,sh,mysql,docker
From: https://www.cnblogs.com/fanwenyan/p/17101403.html

相关文章

  • Linux安装python3
    一、安装依赖环境输入命令:yum-yinstall zlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-d......
  • linux基本功系列之date命令实战
    (文章目录)前言在日常工作中,我们经常会用到date命令来判断任务执行的时间,或者使用date命令去实现时间段内的工作任务,今天我们一起来探讨下date命令:blush:一、date简......
  • linux无阻塞输入
    //头文件#include<sys/ioctl.h>#include<sys/io.h>ioctl(STDIN_FILENO,FIONBIO,&attr);//清除阻塞输入,attr为1,这时读取不能使用getchar或scanf,如果没数据会直接返回len......
  • Linux编写C/C++程序
    ​1、安装gcc、g++编译器1.切换root用户suroot然后输入密码2.输入命令yuminstallgccyuminstallg++3.通过查找路径来检查安装是否完成whichgccw......
  • linux系统安装java环境
    首先要去官网下载jdk,网址:https://www.oracle.com/java/technologies/downloads/#java8下载好压缩包后用XShell连接linux进入usr/local:cdusr/local 然后通过xftp将......
  • linux配置jdk
    1、root用户配置,vim/etc/profile,添加如下内容#setjavaenviromentJAVA_HOME=/opt/jdk1.8.0_311JRE_HOME=/opt/jdk1.8.0_311/jreCLASS_PATH=.:$JAVA_HOME/lib/dt.jar......
  • Linux 多进程程序调试实例(七) -- 套接字
    套接字套接字介绍socket套接字是支持不同主机不同进程之间的通信套接字函数socket套接字函数介绍套接字编程在服务端,套接字编程顺序为套接字创建(socket),套接......
  • Linux 目录的可执行权限的含义
    总所周知:Linux的文件和目录的权限,只有RWX三种。r(Read,读取)对于文件:具有读取文件内容的权限对于目录:具有浏览目录的权限w(Write,写入)对于文件:具有新增,修改,删除文......
  • linux安装maven
    下载安装mavenmaven官网:https://maven.apache.org/download.cgi下载完成后,解压文件,将解压后的maven文件移动到想放的目录下配置mavenmaven仓库资源目录设置配置文件......
  • linux socket
    Linux网络基础编程 内容简介一、socket的概念二、socket的类型三、socket的位置四、网络地址五、端口号六、字节序七、socket基础编程 一、socket的概......