使用Docker部署SpringBoot项目(避坑+超级详细版本)
所有文章不设限,我们相遇偶然,相散坦然,互不打扰,各自安好,向阳而生
首先呢,非常感谢我们一起相遇在这个地方,想必此刻的你也是在一个学习求知的过程,我们一样,我们都是在求知的路上匍匐前进!看到这篇文章,我只希望您能和我一起,安静的看完这篇文章,学有所获,解决您的困惑,让您的时间付出值得!很感谢我们的相遇,祝福我们,明天会更好!如果有困惑,请留言!
1.确定Centos的版本
首先呢,我们确定一下Centos的版本,这一步是非常重要的,一个良好的开始是成功的一半,不然后期我们启动docker怎么也都启动不起来,那就是这里的坑
[WangHui@WangHui ~]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
2.配置yum源
因为我们如果使用yum update命令升级所有包同时也升级软件和系统内核,将会非常慢,所以使用国内的yum源,速度将会是非常可爱的,下来我们就配置一下
首先做一个备份,以防万一,如果我们配置失败了,还能恢复人家原来的镜像源
[root@WangHui /]# mkdir /my_prepare
[root@WangHui /]# cp -r /etc/yum.repos.d /my_prepare/
[root@WangHui /]# cd /etc/yum.repos.d/
[root@WangHui yum.repos.d]# ls
] CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
Centos-7.repo CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo
Centos-7.repo.1 CentOS-Debuginfo.repo CentOS-Sources.repo docker-ce.repo
[root@WangHui yum.repos.d]#
接下来我们下载阿里云的镜像源,千万看清楚了,自己的Centos是7还是8,别下载错了
方法一:如果手速不快,yum还能用,那就使用wget安装吧
[root@WangHui /]# yum install wget -y
[root@WangHui /]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
方法二:如果你手速快,已经损毁了yum源,那就这样吧
[root@WangHui /]# curl -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
有时候,走错一步,下一步就会变得艰难,但是请不要一直遗憾抱怨,去寻找方法,去解决困境,走出来才是最重要的
然后我们清理一下缓存
[root@WangHui /]# yum clean all
[root@WangHui /]# yum makecache
3.更新软件包和系统版本
我的已经更新过了,就只作为演示哈,大家一定要按照步骤来
[root@WangHui ~]# yum update
已加载插件:fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Repository contrib is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No packages marked for update
[root@WangHui ~]#
4.卸载旧版本
为了以防万一,造成后期莫名错误。我们这里先提前对于这些老旧顽固分子进行卸载
有时候呢,许多事情过去就是过去,请千万不用藕断丝连,不要给自己留有幻想,实际一些,显示一点,明白差距,然后前行!
[root@WangHui ~]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
5.安装一系列预备软件
我已经安装过啦,还是只作为演示哈,相信大家一定可以做得很好地,加油鸭!
[root@WangHui ~]# yum -y install gcc gcc-c++ yum-utils -y
6.设置stable镜像仓库
还是老道理,金窝银窝不如自己的不如自己的狗窝,哪里好都没有祖国好,所以我们使用我们自己的镜像仓库,不仅快,也因为我们说的是汉语,我们是中国人!
[root@WangHui ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
但是作为科学,我们又是认真的。使用默认的国外镜像仓库有以下问题
报错:
1 [Errno 14] curl#35 - TCP connection reset by peer
2 [Errno 12] curl#35 - Timeout
7. 更新yum软件包索引
[root@WangHui ~]# yum makecache fast
有点像第二步的哈,确实有点类似,可以研究一下哈
8.安装DOCKER CE
[root@WangHui ~]# yum -y install docker-ce docker-ce-cli containerd.io
速度还是杠杠滴,所以说嘛,还是祖国好!如果不认可,请执行 rm -rf /* ,然后离开,谢谢!
9.启动docker
[root@WangHui ~]# docker version //查看版本
[root@WangHui ~]# systemctl start docker //启动
[root@WangHui ~]# systemctl status docker //查看状态
[root@WangHui ~]# systemctl stop docker //停止
[root@WangHui ~]# systemctl enable docker //开机自启
启动之前先看看version
没嘛达哈
帮助启动类命令
· 启动docker: systemctl start docker
· 停止docker: systemctl stop docker
· 重启docker: systemctl restart docker
· 查看docker状态: systemctl status docker
· 开机启动: systemctl enable docker
· 查看docker概要信息: docker info
· 查看docker总体帮助文档: docker --help
· 查看docker命令帮助文档: docker 具体命令 --help
10.创建SpringBoot项目(测试使用)
我们选择SpringBoot快速生成项目
选中web工程,这样我们可以避免自己写Get和Post请求进行测试
11.启动项目进行测试
浏览器客户端访问
12.此处提供几个非常好的插件,供大家参考
13.配置docker, Docker开启远程访问
[root@WangHui ~]# vim /usr/lib/systemd/system/docker.service
# 在ExecStart=/usr/bin/dockerd追加
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
[root@WangHui ~]# systemctl stop firewalld.service //关闭防火墙(切记切记,端口无法访问要检查防火墙)
# 重新启动
[root@WangHui ~]# systemctl daemon-reload
[root@WangHui ~]# systemctl restart docker
尝试访问
输入 ip addr查看自己虚拟机的ip地址,如果有误,请网上寻找虚拟机网络配置教程
远程访问测试
14.IDEA的docker插件配置远程
tcp://虚拟机IP:端口号 ,参考-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock,端口与此一致
15.项目打包(此处有坑)
本地测试报错,缺乏主要资源
如果直接使用docker打包运行就会报 no main manifest attribute, in /app.jar
此错误是由于该版本太低,太高打包直接报错,所以要与jdk版本匹配
太高
正确版本对应
pom中使用该源码替换,让自己去匹配
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
然后clean,再重新打包
正确情况
启动成功
16.编写Dockerfile
FROM openjdk:8-jdk-alpine
ADD ./mydemo0127-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-jar","app.jar"]
17.运行dockerfile
18.启动容器
[root@WangHui ~]# docker images //查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
wr0127 latest 0c9066443b55 4 minutes ago 122MB //镜像名
openjdk 8-jdk-alpine a3562aa0b991 3 years ago 105MB //拉取的jdk包
docker run -it -p 代理端口号:原端口号 --name=容器名 镜像名/可用镜像id代替
[root@WangHui ~]# docker run -it -p 521:8080 --name=love love