从零到一:服务器搭建环境并使用Docker部署项目上线

一、服务器购买

1.购买服务器

前往阿里云官网购买服务器

前往阿里云或者腾讯云购买服务器,有秒杀或者新人优惠,一般80多即可购买一个一年左右的。
镜像选择CentOS7.6,我购买的阿里云的轻量应用服务器,购买之后前往控制台查看,则会看见如下图所示:
从零到一:服务器搭建环境并使用Docker部署项目上线_第1张图片

2.重置服务器密码

重置服务器密码,密码重启服务器后生效。

从零到一:服务器搭建环境并使用Docker部署项目上线_第2张图片

3.远程连接

点击远程连接,输入root密码即可进入服务器页面,在该页面我们将下载对应软件

从零到一:服务器搭建环境并使用Docker部署项目上线_第3张图片

二、安装宝塔面板

由于本人比较菜,需要配合宝塔面板使用哈哈哈哈

1.安装脚本

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
直接在服务器中输入上述命令即可,遇见询问点击yes则可。
从零到一:服务器搭建环境并使用Docker部署项目上线_第4张图片

2.放行端口

安装好之后需在阿里云服务器上面的防火墙中放行12271端口。
点击实例id即可进入服务器相关设置
从零到一:服务器搭建环境并使用Docker部署项目上线_第5张图片
从零到一:服务器搭建环境并使用Docker部署项目上线_第6张图片

3.登录面板

宝塔面板安装成功之后给给你内外网登录地址以及初始的默认密码,并且也会提示放行端口。
从零到一:服务器搭建环境并使用Docker部署项目上线_第7张图片

4.相关命令

服务器输入命令:bt,即可进行对应操作,包括修改Miami等等。
从零到一:服务器搭建环境并使用Docker部署项目上线_第8张图片

5.连接终端

直接点击面板中的终端即可远程连接服务器,但是第一次连接提示需要输入密码,你正常输入密码即可。即便你输入的密码正确也可能会出现如下图的情况:
从零到一:服务器搭建环境并使用Docker部署项目上线_第9张图片
解决方法:点击面板中的“安全”— “SSH管理”—打开SSH密钥登录即可
从零到一:服务器搭建环境并使用Docker部署项目上线_第10张图片

6.作用

可以通过面板下载相关软件、以及远程连接服务器、对服务器进行简单的监控,更好的对数据进行管理等。

三、安装Docker

后续一切软件都将基于Docker服务运行

1.安装脚本

直接在宝塔面板中安装或者自己在网上找一下docker镜像地址。
直接在面板中的软件商店搜索docker进行安装即可
从零到一:服务器搭建环境并使用Docker部署项目上线_第11张图片

2.验证成功

输入docker -v或者docker Info命令能正常显示信息即可
从零到一:服务器搭建环境并使用Docker部署项目上线_第12张图片

3.常用命令

  1. 启动 Docker 服务:systemctl start docker
  2. 查看 docker 状态:systemctl status docker
  3. 停止 Docker 服务:systemctl stop docker
  4. 重启 Docker 服务:systemctl restart docker
  5. 开机启动 Docker:systemctl enable docker
  6. 查看镜像:docker images
  7. 搜索镜像:docker search 搜索内容(如redis)
  8. 拉取镜像:docker pull 镜像名称(如redis)
  9. 删除指定镜像:docker rmi 镜像ID
  10. 删除所有镜像:docker rmi docker images -a -f dangling=true
  11. 查看容器:docker ps
  12. 查看正在运行的容器:docker ps -a
  13. 启动一个容器:docker run -d --name 容器名称 镜像名称
  14. 进入容器:docker exec -it 容器ID /bin/bash
  15. 停止一个容器:docker stop 容器ID
  16. 删除一个容器:docker rm 容器ID
  17. 查看容器日志:docker logs 容器ID
  18. 查看容器详细信息:docker inspect 容器ID
  19. 导出容器容器的文件系统为 tar 文件:docker export 容器ID > dump.tar
  20. 将 tar 文件导入回 Docker:docker import - < dump.tar
  21. 查看 Docker 系统信息:docker info
  22. 查看 Docker 版本信息:docker version
  23. 查看 Docker 系统资源使用情况:docker stats
  24. 查看 Docker 网络信息:docker network inspect all
  25. 查看 Docker 存储信息:docker system df -v

四、安装Nacos

1.安装脚本

docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server

2.命令含义

  • -d: 以后台模式运行容器。
  • –name nacos: 为容器指定一个名称,这里为"nacos"。
  • -p 8848:8848: 将容器内的8848端口映射到主机的8848端口,使得在主机上可以通过访问主机的8848端口来访问运行在容器内的Nacos服务器。
  • -e PREFER_HOST_MODE=hostname: 设置环境变量PREFER_HOST_MODE的值为"hostname",这表示Nacos服务器将优先使用主机模式(Host Mode)运行。
  • -e MODE=standalone: 设置环境变量MODE的值为"standalone",这表示以独立模式运行Nacos服务器。
  • nacos/nacos-server: 指定要运行的Docker镜像的名称和标签,这里使用的是Nacos官方提供的Nacos服务器镜像。

3.访问Nacos

首先你可以通过docker images nacos和docker ps 查看Nacos服务是否安装成功,并且通过docker logs nacos查看Nacos的启动日志
其次访问地址:http://127.0.0.1:8848/nacos,这儿写你自己服务器的地址,如果访问不成功,则大概率是8848端口没有开放

4.开放端口

该功能同样适用于其他软件.提供两种方式:命令行和宝塔面板。

方法一

以宝塔面板或者服务器的形式开放端口

用户可在宝塔面板中或者服务器中的防火墙中将8848端口放行即可,如下图所示:
从零到一:服务器搭建环境并使用Docker部署项目上线_第13张图片

方法二

以命令行的方式开启8848端口

  1. 检查防火墙状态

systemctl status firewalld 查看防火墙
systemctl start firewalld 开启防火墙 (service firewalld start)
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld.service 禁止开机启动防火墙

  1. 查看服务端口是否对外开放

netstat -anp (查看已经对外开放端口)
firewall-cmd --query-port=8848/tcp(查询指定端口是否对外开放)

  1. 开放端口命令步骤
firewall-cmd --add-port=8848/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=8848/tcp 

五、安装Redis

1.安装脚本

docker pull redis (拉取最新的镜像)
docker run --restart=always -p 6379:6379 --name redis -v /mydata/redis/data:/data
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf
-d redis redis-server /etc/redis/redis.conf --requirepass redis

2.命令含义

  • docker run:这是Docker命令行接口的基本命令,用于创建并运行新的容器。
  • –restart=always:此选项指定,如果容器退出,系统总是重启它。这通常用于需要持续运行的服务
  • -p 6379:6379:此选项将主机上的6379端口映射到容器内的6379端口。这样,可以通过主机的6379端口访问Redis服务器。
  • –name redis:此选项为新创建的容器指定一个名称,这里是“redis”。
  • -v /mydata/redis/data:/data:此选项将主机上的/mydata/redis/data目录挂载到容器内的/data目录。这意味着Redis的数据文件将保存在主机上的这个目录中。
  • -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf:此选项将主机上的/mydata/redis/conf/redis.conf文件挂载到容器内的/etc/redis/redis.conf文件。这意味着Redis的配置文件将使用主机上的这个文件。
  • -d redis:此选项以“redis”用户身份运行容器。
  • redis redis-server /etc/redis/redis.conf --requirepass redis:这是容器内要运行的命令。它启动Redis服务器并使用配置文件/etc/redis/redis.conf。–requirepass redis选项设置Redis服务器的密码为“redis”。

总结一下,这个命令在Docker容器中以持久化方式运行Redis服务器,并将主机的6379端口映射到容器的6379端口,以便通过主机的6379端口访问Redis服务器。它还将主机的/mydata/redis/data目录用作Redis的数据文件存储,并将主机的/mydata/redis/conf/redis.conf文件用作Redis的配置文件。最后,它设置Redis服务器的密码为“redis”

3.访问Redis

直接通过RDM工具测试连接Redis即可,若不能访问则可能需要放开6379端口,其实Redis7.0之后设置密码之后用户默认是:default,而非root

六、安装MySQL

1.安装脚本

docker search mysql
docker pull mysql
docker run --restart=always -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

2.命令含义

  • –restart=always:这个选项告诉Docker,当容器退出时,总是重启它。也就是说,即使容器因为某些原因意外停止了,它也会自动重新启动。
  • -d:这个选项告诉Docker以分离模式运行容器。这意味着容器运行在后台,并且不会连接到终端。
  • –name mysql:这个选项给容器指定一个名称,这里是mysql。
  • -p 3306:3306:这个选项将容器的端口映射到主机的端口。这里是将容器的3306端口映射到主机的3306端口。这样,您可以从主机上的3306端口访问容器的MySQL服务。
  • -e MYSQL_ROOT_PASSWORD=123456:这个选项设置了一个环境变量MYSQL_ROOT_PASSWORD,并将其设置为123456。这个环境变量用于配置MySQL的root用户的密码。
  • mysql:这是要运行的Docker镜像的名称。这里使用的是MySQL的官方镜像。

总结起来,这个命令的作用是在Docker中启动一个MySQL容器,将其命名为mysql,将容器的3306端口映射到主机的3306端口,设置MySQL的root用户密码为123456,并配置容器在退出时总是自动重启

3.访问mysql

通过navicat工具远程访问即可,若提示访问不成功,则需在要服务器上放行3306端口。

七、安装RabbitMQ

1.安装脚本

docker search rabbitmq (查找镜像)
docker pull rabbitmq(拉取镜像)
docker run --restart=always -d --hostname rabbitmq --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq

2.命令含义

  • docker run:这是Docker命令行工具中用于创建和启动容器的命令。
  • –restart=always:这个选项指定容器在退出时是否自动重启。这里设置为"always",表示容器在任何退出情况下都会自动重启。
  • -d:这个选项使容器在后台运行,也就是以分离模式运行。
  • –hostname rabbitmq:这个选项设置容器的主机名为"rabbitmq"。
  • –name rabbitmq:这个选项为容器指定一个名字,叫做"rabbitmq"。
  • -p 15672:15672:这个选项将主机上的15672端口映射到容器内的15672端口。这是RabbitMQ的管理插件使用的端口。
  • -p 5672:5672:这个选项将主机上的5672端口映射到容器内的5672端口。这是RabbitMQ的AMQP协议端口。
  • rabbitmq:这是要运行的Docker镜像的名称。在这种情况下,它应该是RabbitMQ的官方Docker镜像。

所以,这个命令的总体作用是创建一个名为"rabbitmq"的Docker容器,该容器会自动重启,并且在主机上使用指定的端口映射运行RabbitMQ服务。

3.访问RabbitMQ

成功访问改地址即可http:/你的ip:15672/,出现登录管理页面即可成功。从零到一:服务器搭建环境并使用Docker部署项目上线_第14张图片
但是仍存在访问不了的情况,需要开放15672和5672端口。但是仍存在放开端口之后还是访问不了,这是因为没有开启插件。以下为开启插件命令:
docker exec -it rabbitmq bash (首先进入容器)
rabbitmq-plugins enable rabbitmq_management(开启插件)
最终,则可进入登录页面,默认账号和密码均是guest!

八、安装xxl-job

1.安装脚本

docker pull xuxueli/xxl-job-admin:2.4.0 (拉取镜像)
docker run -di -e PARAMS=“–spring.datasource.url=jdbc:mysql://ip地址:3306/xxl_job? Unicode=true&characterEncoding=UTF-8&useSSL=false --spring.datasource.username=root --spring.datasource.password=123456 --xxl.job.accessToken=test”
-p 8081:8080
-v /usr/local/src/docker/xxl-job:/data/applogs
–name xxl-job
–privileged=true
xuxueli/xxl-job-admin:2.4.0

2.命令含义

  • docker run:这是Docker命令行工具中用于创建并运行新容器的命令。
  • -di:这是两个选项的结合,-d表示在后台运行容器(即分离模式),而-i表示运行容器时自动attach一个交互式终端。
  • -e PARAMS=“–spring.datasource.url=jdbc:mysql://47.116.192.164:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&useSSL=false --spring.datasource.username=root --spring.datasource.password=mysql --xxl.job.accessToken=test”:这是一个环境变量,它设置了Spring的数据库连接URL以及用户名和密码。这里的URL用于连接在IP地址47.116.192.164上运行的MySQL数据库,端口号为3306,数据库名称为xxl_job。还设置了Unicode、characterEncoding、useSSL等参数。
  • -p 8081:8080:这是端口映射,表示将宿主机器的8081端口映射到容器的8080端口。
  • -v /usr/local/src/docker/xxl-job:/data/applogs:这是卷(volume)挂载,表示将宿主机器上的/usr/local/src/docker/xxl-job目录挂载到容器的/data/applogs目录。
  • –name xxl-job:这给新创建的容器命名为xxl-job。
  • –privileged=true:这给容器提供了超级用户权限,使得容器内的应用能够访问和操作所有的设备、目录和文件。
  • xuxueli/xxl-job-admin:2.4.0:这是要运行的Docker镜像的名称和版本号。

这个命令的主要目的是在Docker中启动一个名为xxl-job的容器,该容器运行一个应用,并使用特定的环境变量、端口映射、卷挂载和权限设置。

3.访问xxl-job

输入ip地址:http://127.0.0.1:8081/xxl-job-admin/,出现登录页面即可,记得放行端口哦。

九、使用Docker部署Java项目

1.打包Java的jar

直接在idea中点击:clean-package-install命令,即可将项目的jar下载至本地
从零到一:服务器搭建环境并使用Docker部署项目上线_第15张图片

2.上传项目至服务器指定目录

首先我们在服务器上面创建一个目录:/ javaweb/push(也可以直接在面板的文件中创建文件和上传)
从零到一:服务器搭建环境并使用Docker部署项目上线_第16张图片
上传项目jar至push文件夹下,直接使用面板的上传功能。
从零到一:服务器搭建环境并使用Docker部署项目上线_第17张图片
从零到一:服务器搭建环境并使用Docker部署项目上线_第18张图片

3.创建DockerFile

在push的文件夹中输入命令:vim DockerFile,再将以下参数输入进文件,按一下esc,再输入保存退出命令(:wq)即可(也可以直接使用面板中的创建,超级方便!)

从零到一:服务器搭建环境并使用Docker部署项目上线_第19张图片
在这儿,为什么还有app文件夹呢?(所以你还需要再push下在创建一个app文件夹哦)
这儿是因为到时候创建一个可以复用的jar,比如到时候你需要更新项目的时候,只需要替换app目录下的push.jar,然后使用docker restart 容器id的命令重启一下就可以实现项目的更新了

4.复制jar

既然刚刚说了需要替换,那么我们也需要将push-0.0.1-SNAPSHOT.jar复制一份在app下,并修改名称为push.jar,如果不复制,则容器会失败,找不到该jar。
image.png

5.打包镜像-创建并运行容器

打包镜像:
docker build -t user .
这个时候会报错,拉取Java8环境错误:
从零到一:服务器搭建环境并使用Docker部署项目上线_第20张图片
解决方法:修改dockerfile中的java:8为openjdk:8,修改之后如下图:
从零到一:服务器搭建环境并使用Docker部署项目上线_第21张图片
创建容器并且运行命令如下:
docker run -d --name push -p 8008:8008 -v /root/javaweb/push/app:/app -e TZ=Asia/Shanghai --restart=always push(创建容器并运行)
可以使用docker images 和docker ps 验证是否成功
从零到一:服务器搭建环境并使用Docker部署项目上线_第22张图片

6.替换jar,验证是否可更新

我现在项目启动是这样的,待会儿删除几行更新一下。(替换app下的push.jar,你也可以将原jar更换一个名字保留或者直接删除掉)
从零到一:服务器搭建环境并使用Docker部署项目上线_第23张图片
上传最新jar,修改原jar名。
从零到一:服务器搭建环境并使用Docker部署项目上线_第24张图片
使用docker restart push命令重启,验证是否成功。
image.png
从零到一:服务器搭建环境并使用Docker部署项目上线_第25张图片
重启成功,至此,整个流程结束!!!

十、总结

为什么会安装这些软件呢,因为我的项目都使用到了,所以就安装了。
整个过程还是摸索了很久,网上找了很多人的资料,借鉴了许多地方,整理出来,与君共享。

你可能感兴趣的:(Java,服务器,docker,java,mysql,linux,redis,rabbitmq)