开源项目RuoYi-Cloud-Plus详解——docker服务器开发环境配置(持续更新)

开源项目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三个服务即可。前端也直接启动即可


在这里插入图片描述


在这里插入图片描述


至此,开发环境完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值