手动将Java SpringBoot项目部署到云服务器上(使用docker)

前言

本文记录一下我作为一个小白如何通过docker手动将java springboot项目部署到云服务器上(以腾讯云的轻量应用服务器为例)。但是我个人还是推荐安装一个宝塔面板部署,真的全程自动化,非常方便,网上有很多相关的教程可以搜搜看。所以我写这个教程其实只想记录一下我第一次部署云服务器的过程,并不是最好的部署方案,主要目的还是为了完成某个课程设计的部署任务,不能保证安全性!(因为我第一次部署后就因为密码太简单导致数据库被攻击了。。。)所以对于大型项目可能不太适合。

由于我对运维方面也不是特别了解,如有错误欢迎指出!

1.云服务器

可以到阿里云/腾讯云等服务商的官网购买云服务器,新注册的用户可以找到免费试用,一般都有几个月的免费试用期。

我这里选择了腾讯云的轻量应用服务器,具体配置视情况而定。

创建实例,操作系统为 CentOS 7.9 64bit

然后到控制台界面进入实例,登录

第一次登录貌似是没有自己设置的密码的,所以登录前需要重置密码(在上面那个登录键的旁边)

那么初始密码是什么?找到最上面一栏的小信封,有一个提示服务器创建成功的信息,点开里面就可以看到初始密码了

重置密码后,点击登录,进入远程登录的控制台面板,之后docker部署什么的都在这里完成

2.安装docker

云服务器 搭建 Docker-最佳实践-文档中心-腾讯云 (tencent.com)这个链接里有详细的教程,按照里面的命令复制粘贴就可以了。这里有一个小小的坑,要注意操作系统CentOS的版本,如果是7.X的要切换一下,8.X的命令是行不通的!

安装好了就会得到镜像名(一串字符)

3.部署项目

接下来就可以进入到项目的部署了。部署之前要搞清楚一件事,就是想要部署的Java项目配置了哪些工具(?或者是说中间件,可以在项目的配置文件里查看),那么就在docker上部署相应的工具。比如我要部署的这个项目使用到了MySQL、Redis,那么我在docker上部署这两个就可以了。

3.1安装jdk

既然要在云服务上运行Java项目,那么jdk肯定是少不了的。需要在本地下载好Linux的系统的jdk,jdk版本最好选择和本地电脑上版本一致的,我用的是jdk16.0.2

Oracle官网:Oracle | Cloud Applications and Cloud Platform

linux jdk16下载地址:Java Archive Downloads - Java SE 16 (oracle.com)
 

下载后需要把本地的jdk压缩包传输到云服务器上,所以需要下载文件传输的工具,例如FileZilla(也可以用XShell6与XFtp6什么的,反正能远程传文件就行了)

文件->站点管理器->新站点

填写主机ip,协议选择SFTP,用户密码写之前自己设置的,点击连接显示连接成功就可以传文件了(超时的话可以检查有没有写错或者电脑换一个网络)

为了使服务器上的文件有条理,先在命令行里新建文件夹用来放置jdk相关的文件

mkdir java
cd java
mkdir jdk
cd jdk

filezilla远程站点进入到该路径下,左边本地站点找到刚才下载的jdk压缩包右键上传

回到命令行ls查看就可以看到里面有一个压缩包了,解压压缩包

tar -zxvf 压缩包名字.tar.gz

解压后

配置Java环境

vim /etc/bashrc

在文件的前面添加,注意jdk版本

export JAVA_HOME=/root/java/jdk/jdk-16.0.2(jdk版本) 
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

保存文件退出,执行以下命令刷新配置

source /etc/bashrc

查看java版本,成功输出版本内容就说明jdk配置成功了(失败的话检查是不是环境变量配置有误)

3.2安装mysql并加载数据

事先要将本地数据库的数据导出为.sql文件,然后将文件传输到云服务器上

如果使用的是mysql workbench可以看这个文章教怎么导出.sql文件:

如何使用Mysql Workbench导出一整个sql文件,sql包? - 星朝 - 博客园 (cnblogs.com)

然后使用和刚才传jdk压缩包一样的方法,传.sql文件(我放在了/java/dumps/文件夹下)

启动docker,拉取MySQL8.0镜像

systemctl start docker
docker pull mysql:8.0
上面那条下不了可以用这个国内的镜像网站:
docker pull daocloud.io/library/mysql:8.0

创建容器(我设置的密码是root,一定要把密码设置得复杂一些!

docker run \
--name mysql \
-p 3306:3306 \
--restart=always \
-e MYSQL_ROOT_PASSWORD=root \
-v /var/lib/mysql/:/var/lib/mysql/ \
-d mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

进入mysql容器,登录数据库

docker exec -it mysql /bin/bash
mysql -uroot -proot

显示这样的就是成功了

quit命令退出来,复制.sql文件到容器内(注意这里文件名)

docker cp *.sql mysql:/home  

再次进入容器,进入刚才复制的路径/home,进入数据库

docker exec -it mysql /bin/bash 进入容器
cd home 进入复制的路径
mysql -uroot -proot 进入数据库

创建一个新的数据库,将sql文件导入

create database 数据库名
use 数据库名
source sql文件名.sql   导入sql文件

4.安装Redis

创建redis容器

docker pull redis
docker run -d --name redis --restart=always -p 6379:6379 redis --requirepass "yourpassword"

如果pull的时候出现Timeout错误,可以看看我写的另一篇文章:docker pull redis出现错误Timeout exceeded while awaiting headers解决-CSDN博客

docker ps可以看到redis就说明创建成功了

5.打包Jar包

修改配置文件中的IP地址以及各种密码,在IDEA的右侧栏点开Maven项

划掉test,然后先clean,后package

这样就是打包好了

在文件夹中找到jar包,使用相同的方法传jar包到服务器上

服务器上,进入到jar所在的目录下,输入命令

java -jar 你的jar包名.jar

启动成功

别忘了防火墙添加端口(这里还有添加项目的端口,我没有截到)

然后就可以通过服务器IP+端口访问了!

但是这样的话如果这个进程关闭就访问不了,所以需要使项目永久运行:

nohup java -jar 你的jar包名.jar > system.log 2>&1 &

这样就完成部署了,感谢观看!

  • 27
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值