**在本地安装虚拟机请务必给虚拟机分配足够内存!!!,**否则服务可能会在启动中挂掉
分配4G内存我这边是够的,具体需要分配多少内存请根据实际情况加上微服务数量来分配内存
docker中常用的命令
docker images #查看镜像
docker ps #查看正在运行的容器
docker ps -a #查看所有容器(包括运行和停止)
#以下命令需安装完docker-compose后方可执行查看效果
docker-compose logs #查看启动服务所打印的日志
docker-compose logs -f #跟踪启动服务的日志打印
docker-compose up -d # 后台启动
netstat -luntp #查看所有服务启动后端口是否被侦听*这个很重要*
安装所需的软件包
yum install -y yum-utils
设置存储库
# 阿里云地址(国内地址,相对更快)
yum-config-manager
--add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker
引擎
yum install docker-ce docker-ce-cli containerd.io
安装完成后,运行下面的命令,验证是否安装成功。
docker version # 查看Docker版本信息
systemctl start docker # 启动 docker 服务:
systemctl stop docker # 停止 docker 服务:
systemctl status docker # 查看 docker 服务状态
systemctl restart docker # 重启 docker 服务
使用配置文件/etc/docker/daemon.json
(没有时新建该文件)
vim /etc/docker/daemon.json
# 添加如下内容,可以自己替换。默认地址是我的创建的
{
"registry-mirrors": ["https://mr63yffu.mirror.aliyuncs.com"]
}
重启Docker Daemon即可
systemctl daemon-reload
拉取官方nacos
镜像
目前若依微服务最新版本需要安装的是2.0.4版本,如需更改请根据实际情况修改拉取的版本号
docker pull nacos/nacos-server:v2.0.4
启动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
MODE=standalone表示单机启动
拉取官方nginx
镜像,默认拉取最新版本
docker pull nginx
创建Nginx
容器。
docker run -di --name nginx -p 80:80 nginx
将容器内的配置文件拷贝到指定目录(请先提前创建好目录)。
# 创建目录
mkdir -p /home/ruoyi/nginx
# 将容器内的配置文件拷贝到指定目录
docker cp nginx:/etc/nginx /home/ruoyi/nginx/conf
终止并删除容器 需要执行
docker stop nginx
docker rm nginx
创建Nginx
容器,并将容器中的/etc/nginx
目录和宿主机的/home/ruoyi/nginx/conf
目录进行挂载。
docker run -di --name nginx -p 80:80 -v /home/ruoyi/nginx/conf:/etc/nginx nginx
拉取官方mysql8.0
镜像
docker pull mysql:8.0
在本地创建mysql
的映射目录
mkdir -p /home/mysql/data /home/mysql/logs /home/mysql/conf
创建容器,将数据、日志、配置文件映射到本机
#此处的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
进入容器/执行命令: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
未挂载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; #刷新数据
已挂载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; #刷新数据
拉取官方redis
镜像
docker pull redis
创建容器
docker run -di --name redis -p 6379:6379 redis
连接容器中的Redis
时,只需要连接宿主机的IP + 指定的映射端口
即可。
下载
# 因为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
授权
# 将可执行权限应用于该二进制文件
sudo chmod +x /usr/local/bin/docker-compose
测试
docker-compose --version
卸载
谨慎操作,此处仅提供卸载方法,如有需要可执行此命令
rm /usr/local/bin/docker-compose
jar
包在运行代码正常无bug情况下开始打包操作
ruoyi(root)
里进行操作)清除缓存重启idea成功后重复上述操作
bootstrap.yml
配置文件[这里非常重要]其他服务bootstrap.yml
配置与auth保持一致
ruoyi-gateway
如不需要使用sentinel可以将此处注释
将所有模块配置完成后进行maven
打jar包
操作(在模块未运行的情况下进行打包操作
)
执行完毕可以看到所在模块下已经生成target
文件了
docker/ruoyi
其余文件夹jar包操作参考上文
dockerfile
文件无需进行操作docker/mysql
docker/nacos
进入此目录编辑nacos配置文件
编辑docker/nacos
下dockerfile
文件
将默认状态修改为指定nacos版本此处如果不做配置nacos启动时会再次拉取nacos镜像最新版本
docker ginxconf
编辑这个文件
建议使用默认配置
因为我们在docker中拉取的是nginx最新版本索引nginx的dockerfile不需要进行修改操作
docker ginxhtmldist
这个文件此处将前端代码打包,只介绍在idea打包方式,前端项目打包可让前端进行打包
进入ruoyi-ui目录
执行npm run build:prod
命令,[执行此命令前置操作下载前端依赖需执行npm install --registry=https://registry.npm.taobao.org
命令]
docker/redis
无需进行操作docker
下docker-compose.yml
文件编辑此文件
因为拉去的nacos镜像为2.0.4版本,mysql镜像为8.0版本索引进行以下操作
1、命令行界面输入命令“systemctl status firewalld.service”并按下回车键。
systemctl status firewalld.service
2、然后在下方可度以查看得到“active(running)”,此时说明防火墙已经被打开了。
3、在命令行中输入systemctl stop firewalld.service命令,进行关闭防火墙。
systemctl stop firewalld.service
4、然后再使用命令systemctl status firewalld.service,在下方出现disavtive(dead),这权样就说明防火墙已经关闭。
5、再在命令行中输入命令“systemctl disable firewalld.service”命令,即可永久关闭防火墙。
systemctl disable firewalld.service
# 输出日志,不同的服务输出使用不同的颜色来区分
docker-compose logs
# 跟踪日志输出
docker-compose logs -f
# 关闭颜色
docker-compose logs --no-color
netstat -luntp #用于查看服务端口是否被侦听
cd /home/docker/ #进入docker文件所在目录
./deploy.sh port # 开启所需端口 因为在之前已经关闭防火墙,此命令无需执行
#注意执行完此命令后请执行 docker-compose logs -f #跟踪启动服务的日志打印
#如有报错说明配置有误,请先解决完报错保证nacos,mysql,redis启动成功
./deploy.sh base # 启动基础环境(必须)
nacos
启动成功IP地址为虚拟机IP地址
http://192.168.136.135:8848/nacos
访问成功
编辑nacos
配置
此处仅介绍system配置,其他配置参考system配置即可
配置完成后执行下面命令保证修改后的配置能够被服务读取
./deploy.sh stop # 关闭所有环境/模块 重启服务时执行此操作保证修改的配置被读取
./deploy.sh rm # 删除所有环境/模块 重启服务时执行此操作保证修改的配置被读取
执行完以上命令后再次执行以下命令
./deploy.sh base #执行完此命令请等待两分钟保证nacos,mysql,redis成功启动后执行后续命令
./deploy.sh modules # 启动程序模块(必须)base命令成功启动完服务后执行此命令
执行完./deploy.sh base
命令后在linux中查看正在运行的容器,以下为成功启动并运行
执行./deploy.sh modules
命令后请及时 跟进日志打印查看服务是否启动成功
服务启动成功
浏览器访问http://192.168.136.135 IP地址为虚拟机IP地址,默认访问80端口
如果你是root登陆的话(不是的话,切换到root用户,对*.sh赋可执行的权限)
chmod +x *.sh #执行此命令
参考链接: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
重启mysql即可
//重启mysql步骤
docker ps //查看当前正在运行的容器
//找到mysql的镜像id
docker restart 镜像id
./deploy.sh base
mysql显示[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
./deploy.sh modules
出现此报错 请参考https://blog.51cto.com/u_14832233/3988418
通过重启 docker 服务解决这个问题 注意重启docker之后base服务会被停止需重新执行7.1启动服务
service docker restart #重启 docker 服务
参考链接:https://liuhuanhuan.blog.csdn.net/article/details/116583828spm=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 服务
参考链接:https://liuhuanhuan.blog.csdn.net/article/details/116583828spm=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配置文件
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦