使用FinalShell连接远程服务器,连接成功后开始安装所需的服务
一、docker的安装与卸载
安装
1.配置阿里镜像环境(安装依赖包所需的)
进入 /etc/yum.repos.d/ 文件夹下找到 CentOS-Base.repo (可以先将此文件copy一份)文件,将以下内容替换整个文件内容:
[base]
name=CentOS-$releasever - Base - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
接着往下按顺序执行:
1.安装依赖包:
安装 yum工具:
yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken
2.更新本地镜像源:
# 分别运行以下三个命令
# 设置docker镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#运行完下面这个命令,/etc/yum.repos.d/文件夹下会出现docker-ce.repo文件
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
3.安装 Docker:
现在,你可以安装最新版本的 Docker:
yum install -y docker-ce
4.启动 Docker 服务:
安装完成后,启用并启动 Docker 服务:
//分别运行以下四个命令
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
sudo systemctl enable docker
sudo systemctl start docker
5.检查DOCKER环境是否安装成功:
docker version
6.查看docker启动状态:
systemctl status docker
将docker迁移到指定路径下 (可选)
1.停止docker服务
在迁移之前,需要先停止 Docker 服务,避免在迁移过程中出现数据损坏或丢失的情况。
sudo systemctl stop docker
2. 查看当前 Docker 数据目录
默认情况下,Docker 数据目录为 /var/lib/docker
,你可以通过以下命令确认:
docker info | grep "Docker Root Dir"
3. 创建目标文件夹
创建你想要迁移到的目标文件夹,并确保该文件夹有足够的磁盘空间。我是在home文件夹下创建了docker文件夹(/home/docker)
4.使用 yum 安装 rsync 工具
sudo yum install rsync
5. 迁移 Docker 数据
sudo rsync -avzP /var/lib/docker/ /home/docker/
6. 修改 Docker 配置
编辑 Docker 的配置文件 /etc/docker/daemon.json
(如果该文件不存在,可以创建它)。在文件中添加或修改以下内容:
{
"data-root": "/home/docker"
}
7. 启动 Docker 服务
修改配置后,启动 Docker 服务并检查是否正常运行。
sudo systemctl restart docker
sudo systemctl status docker
8. 验证迁移结果
通过以下命令再次查看 Docker 数据目录,确认是否已更新为新的目录。
docker info | grep "Docker Root Dir"
9. 清理旧数据(可选)
在确认 Docker 服务正常运行且数据迁移成功后,你可以选择删除旧的数据目录。但在删除之前,请务必谨慎确认,以免误删重要数据。
sudo rm -rf /var/lib/docker
卸载
1.查询所安装的docker包
yum list installed | grep docker
2.删除docker安装包
yum remove docker-ce.x86_64 -y
2.卸载旧版本 Docker(如果已安装) :
如果你之前已经安装了旧版本的 Docker,请先卸载它。可以使用以下命令来卸载旧版本的 Docker:
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
注:如果按照上面的方式安装docker失败,试一下这个博主的(亲测有效):blog.csdn.net/qq_15752347…
一、为了方便管理先在服务器搭建整个文件结构(用来存放mysql、redis等服务,也是部署项目所需的服务),如果不自己搭建文件结构的话,docker有默认的存放路径,但是不方便查找
1.我是在服务器一级目录创建了data文件夹,然后data文件夹再新建ruoyi文件夹,然后进入ruoyi文件夹再新建如下的文件夹
2.对刚刚新建文件夹下,在新建以下文件夹
jdk文件夹:
mysql文件夹:
redis文件夹:
nginx文件夹:
二、使用docker拉取jdk、redis、mysql、nginx镜像
1.jdk镜像拉取命令:
docker pull kdvolder/jdk8
//注意:如果没指定版本号默认下载最新(latest)
2.mysql镜像拉取命令:
docker pull mysql:latest
//拉取的是最新的
3.redis镜像拉取命令:
docker pull redis:latest
4.查看镜像是否拉取成功
docker images
如图:显示框中的内容,就代表拉取成功了
扩展:部署当中可能会用到的命令
docker rmi 镜像ID
//删除镜像
//镜像ID也就是上图中的“IMAGE ID”
如果拉取镜像失败:
1).更换镜像源,进入到/etc/docker目录下找到daemon.json文件(如果没有此文件,自己手动创建一个),并在文件中写入以下内容:
{
"registry-mirrors": [ "https://b83b84affe094dc59ef2ce1525e3c912.mirror.swr.myhuaweicloud.com" ],
"data-root": "/home/docker"
}
2)重启docker
sudo systemctl restart docker
三、拉取过镜像后需要运行镜像所对应的jdk、redis、mysql容器(nginx容器放到最后在搞)
1.运行jdk容器,并将容器挂载到我们刚开始新建的jdk文件夹中的子文件夹(具体路径:/data/ruoyi/jdk/..)
docker run -di --name=jdk1.8 \
-v /data/ruoyi/jdk/data:/app/data \
-v /data/ruoyi/jdk/logs:/app/logs \
-v /data/ruoyi/jdk/conf:/app/config \
kdvolder/jdk8
运行成功返回一长串类型uuid的东东,表示docker容器已经运行了jdk。
通过命令查看已运行的容器:
docker ps
2.运行mysql容器
2.1运行容器前,先新建一个my.conf配置文件,把它放到mysql文件夹中的conf文件夹下(具体路径:/data/ruoyi/mysql/conf),j这个是数据库的配置文件,内容如下:
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
init_connect = 'SET NAMES utf8'
init_connect = 'SET collation_connection = utf8_unicode_ci'
character-set-server = utf8
collation-server = utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv = /var/lib/mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links = 0
# Custom config should go here
!includedir /etc/mysql/conf.d/
2.2 运行mysql容器,并将容器挂载到我们刚开始新建的mysql文件夹中的子文件夹(具体路径:/data/ruoyi/mysql/..)
docker run -p 3306:3306 --name mysql01 \
-v /data/ruoyi/mysql/log:/var/log/mysql \
-v /data/ruoyi/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /data/ruoyi/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
//MYSQL_ROOT_PASSWORD是设置数据库的密码,账号默认的是root,用来连接数据库
运行成功后也会返回一长串数字和字母
通过命令查看已运行的容器:
docker ps
2.3接下来本地就可以连接mysql了
3.运行redis容器
3.1运行容器前,先新建一个redis.conf配置文件,把它放到redis文件夹中的conf文件夹下(具体路径:/data/ruoyi/redis/conf),这个是redis的配置文件,内容如下:
appendonly yes
3.2 运行redis容器,并将容器挂载到我们刚开始新建的redis文件夹中的子文件夹(具体路径:/data/ruoyi/redis/..)
docker run -p 6379:6379 --name redis01 \
-v /data/ruoyi/redis/data:/data \
-v /data/ruoyi/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
上面指定了redis的端口6379,密码没有设置,然后用可视化软件redis-desktop-manager连接一下,看看是否有问题
连接redis成功,就没啥问题了
三、后端打包
1.首先把若依系统的代码修改一下,具体要修改的文件如下
配置你自己的数据库地址和redis地址以及打包的形式为jar包形式,然后直接打包成jar包放到服务器上/data/ruoyi路径下
2.并在/data/ruoyi下新建Dockerfile文件(注意:是文件不是文件夹)文件中的内容如下配置:
# 使用官方的OpenJDK镜像作为基础镜像
FROM openjdk:11
#将邮箱地址改为正确的邮箱
MAINTAINER 邮箱地址
#上传的jar包名称
ADD ruoyi-admin.jar app.jar
# 暴露应用程序使用的端口,也就是后端项目中所设置的端口
EXPOSE 8001
# 定义容器启动时运行的命令
ENTRYPOINT ["java","-jar","app.jar"]
#输出信息和错误信息的记录
CMD ["java", "-jar", "app.jar"] > ruoyi.log 2>&1
3.开始构建后端镜像,进入到/data/ruoyi路径下,命令如下:
cd /data/ruoyi
4.进入到/data/ruoyi路径下后,执行下面的命令,大致意思就是把当前文件夹下的Dockerfile文件和jar包构建成ruoyi-admin镜像版本为1.0
docker build -t ruoyi-admin:1.0 .
然后开始启动后端容器,启动之前一定要确保redis和mysql运行成功,并把系统运行必须的数据导入到数据库了
docker run -it -d --name ruoyi-admin -p 8001:8001 ruoyi-admin:1.0
4.校验是否启动成功
curl http://localhost:8001
5.如果要在一台服务器部署多个后端项目(部署单个后端项目,请跳过这一块儿)
1.在同一个目录下多创建一个Dockerfile文件,但是因为已经有了一个Dockerfile文件了,所以最好将新创建的以及已有的Dockerfile文件改一下文件名(文件名可自定义,这里我定义为ruoyi-admin的文件名为Dockerfile1,另外一个项目cp-admin的文件名为Dockerfile2),改完之后将已有Dockerfile的文件里面的内容,复制到新建的Dockerfile文件里面(需要改动一些东西,1.上传的jar包名称 2.暴露的端口号)改完之后将后端项目打包上传到同一个目录下
2.以上都完成后将ruoyi-admin容器停止并删除掉,然后再将镜像给删掉,接下来开始构建两个项目的镜像,和单个部署项目的命令有一点点区别,需要指定Dockerfile文件了:
1)构建前,进入到/data/ruoyi路径下,命令如下:
cd /data/ruoyi
2)开始构建后端镜像
//ruoyi-admin
docker build -t ruoyi-admin:1.0 -f Dockerfile1 .
// -f后面跟的是刚刚创建的Dockerfile文件名
//第二个项目:cp-admin
docker build -t cp-admin:1.0 -f Dockerfile2 .
// -f后面跟的是刚刚创建的Dockerfile文件名
3.运行这两个项目的容器
//ruoyi-admin.jar
docker run -it -d --name ruoyi-admin -p 8001:8001 ruoyi-admin:1.0
//第二个项目cp-admin.jar
docker run -it -d --name cp-admin -p 8700:8700 cp-admin:1.0
4.接下来查看两个容器是否运行成功
docker ps
5.接下来校验是否启动成功
//ruoyi-admin
curl http://localhost:8001
//cp-admin
curl http://localhost:8700
注:如果失败试着修改Dockerfile中的openjdk版本,改完之后将镜像和容器删除掉,将上述步骤重来一遍
四.运行nginx容器,以及前端部署
4.1 先运行nginx容器,这里还没有指定文件夹,先往下走
docker run --name nginx01 -p 80:80 -d nginx
4.2 容器跑起来后,把里面的配置文件复制出来,放到nginx文件夹中的conf文件夹下(具体路径:/data/ruoyi/nginx/conf)
docker cp 容器ID:/etc/nginx/nginx.conf /data/ruoyi/nginx/conf
//容器ID指的是下图中标红框的
// /data/ruoyi/nginx/conf指的是要复制到的文件夹路径
复制后刷新以下conf文件夹,会多出一个nginx.conf配置文件
4.3 确定多出一个新的nginx.conf配置文件,然后把容器停掉并删除,以及对应的镜像也要删除,输入以下命令
停掉容器命令:
docker stop 容器名称
//容器名称也就是 nginx01
删除容器命令:
docker rm 容器名称
//容器名称也就是 nginx01
删除镜像命令:
docker rmi 镜像ID
//镜像ID上面内容提到过
可以运行以下命令检验
docker ps -a
//用来查看已运行的容器和停掉的容器:
4.4 运行nginx容器,并将容器挂载到我们刚开始新建的nginx文件夹中的子文件夹(具体路径:/data/ruoyi/nginx/..)
docker run --name nginx01 -p 80:80 \
-v /data/ruoyi/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/ruoyi/nginx/html:/usr/share/nginx/html \
-v /data/ruoyi/nginx/logs:/var/log/nginx \
-d nginx
4.5 部署前端页面,把系统前端页面打包,然后放到服务器/data/ruoyi/nginx/html路径下,其中dist文件夹就是前端打包生成的,这个就不介绍了,自行打包就可以了
4.6 修改4.3中多出来的nginx.cof配置文件,打开配置文件,在#gzip on后面添加如下内容:
server{
listen 80;
server_name localhost;
#将localhost换成自己服务器ip
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html/dist;#配置Vue项目根路径
index index.html index.html; #配置首页
try_files $uri $uri/ /index.html; #防止刷新报404
}
#用于前后端打通
location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8001/;
#将localhost:8080换成服务器ip及后端配置的端口
}
}
配置完成后重启nginx容器
先停掉nginx容器
docker stop 容器名称
然后重启nginx容器
docker restart 容器名称
4.7 访问http://服务器ip:80
4.8 如果要在一个nginx中上传两个前端项目,我是将第二个前端打包项目与第一个前端打包项目放在同一目录下
4.9 修改nginx.conf配置文件
#gzip on;
server{
listen 80;
server_name localhost;
#将localhost换成自己服务器ip
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html/dist;#配置Vue项目根路径
index index.html index.html; #配置首页
try_files $uri $uri/ @router; #防止刷新报404
}
location /CP {
alias /usr/share/nginx/html/CP;#配置Vue项目根路径
index index.html index.html; #配置首页
try_files $uri $uri/ /CP/index.html; #防止刷新报404
}
location @router {
rewrite ^.*$ /index.html last;
}
#用于前后端打通
location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:14012/;
#将localhost:8080换成服务器ip及后端配置的端口
}
}
修改完成后重启一下nginx,第一个项目用http://localhost 访问,第二个项目用http://localhost/CP 访问。
五、node.js项目的部署
现有一个名为my-node-api的node项目,如图:
5.1 在my-node-api目录下创建一个Dockerfile文件,如图:
Dockerfile文件内容如下
# 使用官方 Node.js 镜像作为基础镜像
FROM node:latest
# 设置工作目录
WORKDIR /usr/src/app
# 将项目文件复制到容器中
COPY . .
# 将npm源设置为淘宝镜像
RUN npm config set registry https://registry.npmmirror.com/
# 安装项目依赖
RUN npm install
# 暴露端口
EXPOSE 3000
# 启动应用
CMD ["node", "app.js"]
5.2 在服务器上/data/ruoyi/下创建node文件夹(具体路径:/data/ruoyi/node/),创建完后将my-node-api项目整个的放到/data/ruoyi/node/目录下,如图:
5.3 上传完成后 cd 到 /data/ruoyi/node/my-node-api目录下,如下命令:
cd /data/ruoyi/node/my-node-api
5.4 构建my-node-api项目的镜像,如下命令:
docker build -t my-node-api .
5.5 构建完成后,运行容器,如下命令:
docker run -d --name nodeJs -p 3000:3000 my-node-api
5.6 完成部署,输入 xx.x.x.xxx:3000 就可以成功访问node服务了