开源项目RuoYi-Cloud-Plus学习笔记——主目录(持续更新)https://blog.csdn.net/grd_java/article/details/146400626 |
---|
上一章已经带大家搭建了Ubuntu虚拟机,并通过云服务器内网穿透,让我们可以通过公网ip直接访问到我们的虚拟机了,接下来需要在虚拟机配置我们的开发环境,并且将项目部署到虚拟机让公网访问
文章目录
docker 常用命令
docker search 镜像名称 //搜索镜像
docker pull 镜像名称:版本号 //拉取对应版本的镜像
docker pull 镜像名称 //默认拉取最新的镜像
docker images //查看本地已下载的镜像
docker ps //查看正在运行的容器
docker ps -a //查看所有的容器(包括run、stop、exited状态的)
docker container ls //查看正在运行的容器
docker rm 容器ID //只能删除没有在运行的容器
docker rm -f 容器ID //可以删除正在运行的容器
docker run -p 本地主机端口号:容器服务端口号 --name 容器名字 [-e 配置信息修改] -d 镜像名字
docker start 容器ID //启动容器
docker stop 容器ID //终止容器
docker rmi 镜像名称orID //删除镜像
一、在虚拟机中安装docker和docker-compose
整个步骤都是参考官方文档进行配置
1、安装docker
1.1 找到官网
百度docker官网进入,或者通过网址进入:https://www.docker.com/
找到docs文档
找到Docker Engine,查看其install文档
根据自己的系统进行选择,我这里用Ubuntu系统进行演示
1.2 卸载旧版本docker
执行如下命令卸载旧版本docker
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
执行如下命令,清除无用依赖
sudo apt autoremove
1.3 系统软件包apt
依次执行如下命令
# Add Docker's official GPG key:
# 更新系统软件包
sudo apt-get update
# 安装依赖包,创建目录权限并设置密钥,添加docker存储库等命令
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 最后一定要执行这个命令再次更新系统,保证安装万无一失
sudo apt-get update
1.4 安装最新的docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
查看docker版本
sudo docker version
1.5 启动docker
先关防火墙
# 查看状态:inactive表示没有启动
sudo ufw status
# 关闭防火墙:
sudo ufw disable
# 重新启用防火墙:
sudo ufw enable
#禁用ufw服务:开机自启动关闭
sudo systemctl disable ufw
启动docker
# 启动docker
systemctl start docker
# 开机自启动
systemctl enable docker.service
是否启动成功了呢?
# 查看docker状态
systemctl status docker
# 查看docker版本
docker -v
1.6 设置国内镜像仓库
创建文件夹
sudo mkdir -p /etc/docker
配置加速地址
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://mirrors.tuna.tsinghua.edu.cn",
"http://mirrors.sohu.com",
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://ccr.ccs.tencentyun.com",
"https://docker.m.daocloud.io",
"https://docker.awsl9527.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
daemon重新加载
sudo systemctl daemon-reload
重启docker
sudo systemctl restart docker
跑一个holle world 验证docker
sudo docker run hello-world
docker images命令查看当前下载的镜像
docker ps命令查看正在运行的容器
docker ps -a 查看容器运行状态,可见hello-world运行状态为6分钟前停止(因为这个容器本来就是运行一下子自己就关闭了)
2、安装docker-compose
一个开源项目,定义和运行多容器docker的一个应用程序工具。如果我们的一个应用有多个服务,可以用yml文件配置所有服务,然后通过docker-compose使用一个命令,就可以根据yml文件创建并启动所有服务
由于目前docker一些版本自带v2版本的docker compose,所以先输入命令
docker compose --version
查看是否自带docker compose,可见下图中输出了v2版本的docker compose版本信息。
通过
docker compose version
可以直接查看v2版本
那么我们可以看看v1版本的docker-compose是否安装,
docker-compose --version
命令就是查看v1版本的,可能有些小伙伴看不出来,命令中docker和compose两个单词中间,有-
是v1版本,没有就是v2版本。可见下图中提示没有安装v1版本的docker-compose
系统提示我们使用命令
apt install docker-compose
安装v1版本docker-compose
如何卸载v1版本
# 卸载
sudo apt-get remove docker-compose
# 清除残留
sudo apt-get autoremove --purge docker-compose
二、安装镜像
根据源码中,scripts文件夹下的docker目录下的文件进行配置
1. mysql
docker-compose.yml文件中,可以看到mysql指定镜像为8.0.42版本,所以我们直接拉取镜像即可
sudo docker pull mysql:8.0.42
# 查询镜像
sudo docker images
记住容器安装完,不要docker run,我们通过docker compose统一启动
这里可以通过目录转至第三节:idea连接虚拟机docker,先把远程docker配置了
2. redis
docker-compose.yml文件中,可以看到redis指定镜像为7.2.8版本,所以我们直接拉取镜像即可
sudo docker pull redis:7.2.8
3. minio
参考yml文件中配置,安装对应版本
sudo docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z
4. nginx
sudo docker pull nginx:1.22.1
5. bellsoft/liberica-openjdk-rocky:17.0.16-cds
如果你是第一次查看文章,这里的内容可能会看不懂,因为这是配置nacos之前的补充小节,请先向后看,之后需要用到这个镜像时,再回来查看即可。
docker hub 查询bellsoft/liberica-openjdk-rocky
找到17.0.16-cds版本,复制命令拉取镜像
docker pull bellsoft/liberica-openjdk-rocky:17.0.16-cds
如果下载太慢,可以选择使用docker.desktop下载镜像
然后打开cmd窗口,通过命令
docker save -o 你想要存储镜像的路径+文件名.tar 目标镜像
docker save -o C:\Users\Public\Desktop\liberica-openjdk-rocky.tar bellsoft/liberica-openjdk-rocky
将其上传到服务器
通过命令
docker load < 需要加载的镜像路径
来加载镜像
然后你就会发现你拥有了一个jdk镜像
三、idea连接虚拟机docker
settings-Build,Execution,Deployment-Docker菜单中,点击加号添加一个docker连接
添加一个docker连接后,选择SSH连接方式,电价后面的
...
添加一个SSH连接
因为我们要连接虚拟机,而我们的虚拟机是通过公网云服务器内网穿透了的,所以填写公网ip和映射端口,输入虚拟机用户名和密码进行配置
配置完成后,进入services面板,就可以看到我们配置的docker远程连接,右键单击,选择Connect连接即可,然后就可以查看docker的各种信息了。images中有我刚刚安装完成的mysql镜像,因为我安装完mysql后,里面就到idea这里配置docker了。
四、idea连接虚拟机,进行FTP文件处理操作
个人并不喜欢用xftp工具处理服务器上的文件,idea远程连接后,可以直接编辑虚拟机上的文件,非常方便,这里单开一小节讲解如何操作,感兴趣的可以尝试一下。
settings-Build,Execution,Deployment-Deployment-点击加号添加一个SFTP连接
第三节我们讲解了idea连接服务器的docker,同时配置了SSH连接,此时直接选择我们当时配置的ssh连接即可。
选择tools-Deployment-Browse Remote Host
此时idea右边工具类就有远程Host窗口了,可以直接管理服务器的SFTP
五、docker compose启动,与docker卷
项目源码中已经给我们对应的docker所有文件了,就是前面提到的docker文件夹,这个文件夹放到虚拟机上即可,一定要放在
/
目录下。因为源码中的docker-compose.yml文件中配置了,
/docker/什么什么什么
的路径,也就是说docker的数据卷挂载和配置挂载路径,都在docker-compose.yml配置为了特别路径,所以我们docker文件夹复制到虚拟机/
目录下,如果你改了yml文件,那么就按你的配置来即可
首先,我不想用默认的密码,所以我要修改docker-compose中mysql的root用户密码,以及在redis.conf文件中,设置redis密码
然后将docker文件夹上传到服务器
/
目录下
非常麻烦对不对,如果使用第四节介绍的idea连接服务器管理SFTP业务,直接在idea将docker文件夹拖过去,然后直接编辑就可以了
1. docker分配文件夹权限
# 为/docker文件夹分配所有权限,如果你的docker文件夹放在其它路径,那么就把最后的文件夹路径做相应变化
chmod -R 777 /docker
2. 启动基础服务
2.1 启动容器
通过
docker compose up -d 跟上docker-compose.yml文件中的服务名称
即可启动容器
上图中几个基础服务的container_name和服务名称一致均已经指定,mysql,redis,minio,nginx-web,我们进入docker文件夹下(和docker-compose.yml同级目录)通过命令启动即可
docker compose up -d mysql redis nginx-web minio
可以发现,这几个容器都提示Published ports are discarded when using host network mode,这是因为我们的docker-compose.yml文件中,指定network_mode: “host”,也就是直接绑定到宿主机的端口上,而我们的命令是端口映射命令,自然是冲突的。就是想要告诉大家,现在这些容器启动是直接在宿主机上绑定这个端口,而不是在容器内部。-d参数是后台运行。
如果你启动后发现有配置错了,改了配置想要重启的话,可以通过命令
docker-compose restart 容器名称container_name
来实现,例如重启mysql
2.2 内网穿透配置
我们使用内网穿透来让公网可以访问到虚拟机
2.2.1 mysql
修改frpc.toml文件内容,和上一章节讲解的配置远程ssh连接一样,配置mysql3306端口的穿透连接
先配置WebServer,保证我们可以动态更新内网穿透客户端的配置
#---------------------配置WebServer---------------------#
webServer.addr = "127.0.0.1"
webServer.port = 7400
#---------------------配置WebServer---------------------#
然后配置穿透端口
#---------------------配置穿透连接服务(本机/本地网络穿透)---------------------#
#开放端口连接
[[proxies]]
#设置连接名称(根据自己需求)
name = "mysql"
#设置连接种类(根据自己需求)
type = "tcp"
#配置本机网络穿透
localIP = "127.0.0.1"
#本机被穿透端口(根据自己需求)
localPort = 3306
#访问端口(根据自己需求)
remotePort = 3306
#127.0.0.1地址指代本机/本地网络,例如本机的数据库、ssh、Nginx、Python 服务等等
#意思就是说当你在其他设备访问公网+6100端口时,则会访问到被控机的127.0.0.1+8080端口以完成网络穿透
#---------------------配置穿透连接服务(本机/本地网络穿透)---------------------#
如果你使用idea进行文件修改操作,记住点击右上角的上传更新按钮,才会生效
配置修改完成后,通过
systemctl restart frpc
命令加载即可
进入frp的控制面板,可以发现已经配置上去了
配置好内网穿透后,通过Navicat连接即可
如果是老版本的Navicat,可能会报错:navicat不支持caching_sha_password加密方式(新版本已经够支持)
mysql8.0使用新的密码加密方式:caching_sha_password
解决方式:修改成旧的加密方式(mysql_native_password),并重置密码
select host,user,plugin from user;
alter user 'root'@'%' identified with mysql_native_password by 'root';
此时还记得第一章中,执行mysql命令么,现在有了云上的数据库,直接把sql放在那里执行就可以了
2.2.2 redis
和mysql同样的步骤,配置内网穿透
#---------------------配置穿透连接服务(本机/本地网络穿透)---------------------#
#开放端口连接
[[proxies]]
#设置连接名称(根据自己需求)
name = "redis-dev"
#设置连接种类(根据自己需求)
type = "tcp"
#配置本机网络穿透
localIP = "127.0.0.1"
#本机被穿透端口(根据自己需求)
localPort = 6379
#访问端口(根据自己需求)
remotePort = 6379
#127.0.0.1地址指代本机/本地网络,例如本机的数据库、ssh、Nginx、Python 服务等等
#意思就是说当你在其他设备访问公网+6100端口时,则会访问到被控机的127.0.0.1+8080端口以完成网络穿透
#---------------------配置穿透连接服务(本机/本地网络穿透)---------------------#
重启frpc,查看状态
systemctl restart frpc
systemctl status frpc
云服务器开放6379端口
通过连接工具进行连接即可
3. 本地安装docker
24版本及以上的idea,想要制作镜像,需要额外安装docker到本地,docker-desktop 下载地址https://www.docker.com/products/docker-desktop/
等待安装完成后,其安装目录下的resources下的bin目录下,有docker.exe以及docker-compose
回到idea,在settings中的docker取消勾选Detect executable paths automatically,配置Docker executable和Docker Compose executable为上图中的docker.exe
点击OK后,再次对其配置,这次重新勾选上Detect executable paths automatically,可以看到下方依旧会提示Connection successful,最终点击OK
4. nacos
4.1 制作nacos镜像
nacos和上面几个不同,是我们代码单独集成的一个服务,所以我们需要制作docker镜像,放在虚拟机上进行启动。
制作镜像前,记住先用maven打包,install会生成依赖的缓存,package永远是最新的代码,所以根据自己需求生成jar包,然后再执行下面的制作镜像步骤
如果你想修改nacos的默认用户名和密码的话,打成jar包前,先去根目录pom文件中,修改相关配置(下图中因为我们是配置测试开发环境的nacos,所以选择id为dev这里的进行修改,可以将ip地址换成公网ip)
修改nacos服务的配置文件application.properties,需要修改mysql配置信息和上面配置的mysql对应,其次需要修改monitor监控配置,ip地址要写成公网服务器的地址
找到docker-compose.yml文件,找到nacos的image
找到项目提供的nacos服务中的Dockerfile文件,可见这里使用了bellsoft/liberica-openjdk-rocky:17.0.16-cds镜像,请前往第二小节安装镜像阶段,安装此镜像
右键选项菜单,选择Modify Run Configuration
进行相应配置,注意Image tag要和docker-compose.yml中配置的image一致
再次右键dockerfile文件,run运行。即可根据此文件,生成镜像到服务器
4.2 部署开发环境nacos
依旧使用docker compose进行运行,先查看docker-compose.yml文件,如果你上一个步骤,制作镜像时,镜像名称使用了其它名字,这里image要对应上,端口等自行配置
通过命令
docker compose up -d nacos
,nacos是yml文件中配置的服务名称,不是container_name,只是两个正好一样罢了
4.3 内网穿透配置
配置内网穿透,在2.0.0版本之前, 没有特殊配置只需要开放8848端口就可以, 但是2.0.0版本以上, 则需要同时开放三个端口号, 分别为8848/9848/9849,这些端口都可以在docker-compose.yml文件中修改
#---------------------配置穿透连接服务(本机/本地网络穿透)---------------------#
#开放端口连接
[[proxies]]
#设置连接名称(根据自己需求)
name = "nacos-dev"
#设置连接种类(根据自己需求)
type = "tcp"
#配置本机网络穿透
localIP = "127.0.0.1"
#本机被穿透端口(根据自己需求)
localPort = 8848
#访问端口(根据自己需求)
remotePort = 8848
#开放端口连接
[[proxies]]
name = "nacos-dev9848"
type = "tcp"
localIP = "127.0.0.1"
localPort = 9848
remotePort = 9848
#开放端口连接
[[proxies]]
name = "nacos-dev9849"
type = "tcp"
localIP = "127.0.0.1"
localPort = 9849
remotePort = 9849
#127.0.0.1地址指代本机/本地网络,例如本机的数据库、ssh、Nginx、Python 服务等等
#意思就是说当你在其他设备访问公网+6100端口时,则会访问到被控机的127.0.0.1+8080端口以完成网络穿透
#---------------------配置穿透连接服务(本机/本地网络穿透)---------------------#
重启frpc,查看状态
systemctl restart frpc
systemctl status frpc
云服务器开放相关端口,我这里是8848/9848/9849
4.4 访问nacos并上传配置文件
访问
http://公网ip地址:8848/nacos/index.html
,因为是dev开发环境,所以选择dev,然后回到第一章节,按步骤,将配置文件上传到nacos(上传时,注意ip地址改成公网ip,主要是redis,mysql)
记住,每个配置文件中,mysql,redis等等部署到服务器上的东西,都需要修改,将ip地址改成公网ip
5. seata-server
和nacos一样,参考docker–compose.yml,修改一下dockerfile
制作镜像前,根目录pom文件中nacos的IP地址修改为服务器对应地址
然后run这个dockerfile文件即可制作镜像
制作完成后,通过docker compose启动
docker compose up -d seata-server
六、开发环境测试
部署了mysql,redis,minio,nacos,seata,开发环境就搭建完毕了,此时只需要在本地启动服务即可
后端只需要启动gateway网关,auth鉴权,system三个服务即可。前端也直接启动即可
至此,开发环境完成。