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


    一、服务器购买

    1.购买服务器

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

    前往阿里云或者腾讯云购买服务器,有秒杀或者新人优惠,一般80多即可购买一个一年左右的。
    镜像选择CentOS7.6,我购买的阿里云的轻量应用服务器,购买之后前往控制台查看,则会看见如下图所示:
    image.png

    2.重置服务器密码

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

    image.png

    3.远程连接

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

    image.png

    二、安装宝塔面板

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

    1.安装脚本

    yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
    直接在服务器中输入上述命令即可,遇见询问点击yes则可。
    image.png

    2.放行端口

    安装好之后需在阿里云服务器上面的防火墙中放行12271端口。
    点击实例id即可进入服务器相关设置
    image.png
    image.png

    3.登录面板

    宝塔面板安装成功之后给给你内外网登录地址以及初始的默认密码,并且也会提示放行端口。
    d8b10e199b61d9795e5ce01106e87ad.png

    4.相关命令

    服务器输入命令:bt,即可进行对应操作,包括修改Miami等等。
    image.png

    5.连接终端

    直接点击面板中的终端即可远程连接服务器,但是第一次连接提示需要输入密码,你正常输入密码即可。即便你输入的密码正确也可能会出现如下图的情况:
    image.png
    解决方法:点击面板中的“安全”— “SSH管理”—打开SSH密钥登录即可
    image.png

    6.作用

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

    三、安装Docker

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

    1.安装脚本

    直接在宝塔面板中安装或者自己在网上找一下docker镜像地址。
    直接在面板中的软件商店搜索docker进行安装即可
    image.png

    2.验证成功

    输入docker -v或者docker Info命令能正常显示信息即可
    image.png

    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端口放行即可,如下图所示:
    image.png

    方法二

    以命令行的方式开启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
    
    • 1
    firewall-cmd --reload
    
    • 1
    firewall-cmd --query-port=8848/tcp 
    
    • 1

    五、安装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/,出现登录管理页面即可成功。image.png
    但是仍存在访问不了的情况,需要开放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下载至本地
    image.png

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

    首先我们在服务器上面创建一个目录:/ javaweb/push(也可以直接在面板的文件中创建文件和上传)
    image.png
    上传项目jar至push文件夹下,直接使用面板的上传功能。
    image.png
    image.png

    3.创建DockerFile

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

    image.png
    在这儿,为什么还有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环境错误:
    image.png
    解决方法:修改dockerfile中的java:8为openjdk:8,修改之后如下图:
    image.png
    创建容器并且运行命令如下:
    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 验证是否成功
    image.png

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

    我现在项目启动是这样的,待会儿删除几行更新一下。(替换app下的push.jar,你也可以将原jar更换一个名字保留或者直接删除掉)
    image.png
    上传最新jar,修改原jar名。
    image.png
    使用docker restart push命令重启,验证是否成功。
    image.png
    image.png
    重启成功,至此,整个流程结束!!!

    十、总结

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

  • 相关阅读:
    进程和任务管理计划
    机器学习笔记之最优化理论与方法(九)无约束优化问题——常用求解方法(下)
    制作一个企业网站——html华为官网购物商城项目的设计与实现
    C/C++中递归的定义和调用(如何使用递归)
    Python和Matlab生成图片到visio的矢量图
    “漫丝路”主题餐饮空间设计
    SSH Remote Linux Servers By Public Key Authentication
    NL6621 实现获取天气情况
    Direct3D地形绘制基础
    给工资低的朋友6个搞钱建议,作为副业,闷声发小财
  • 原文地址:https://blog.csdn.net/weixin_44415787/article/details/134090543