前言
本文记录一下我作为一个小白如何通过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+端口访问了!
但是这样的话如果这个进程关闭就访问不了,所以需要使项目永久运行:文章来源:https://www.toymoban.com/news/detail-857033.html
nohup java -jar 你的jar包名.jar > system.log 2>&1 &
这样就完成部署了,感谢观看!文章来源地址https://www.toymoban.com/news/detail-857033.html
到了这里,关于手动将Java SpringBoot项目部署到云服务器上(使用docker)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!