springboot项目集成docker部署服务器

1.先搭建docker环境:

安装docker
yum -y install docker

启动docker 后台服务
service docker start 

查看docker启动状态
systemctl status docker 

重启docker(略过这步,只是告诉你命令)
systemctl restart docker

测试运行hello-world
docker run hello-world

2.修改docker下载镜像路径,因为默认国外的会很慢,替换为国内的镜像源

vim /etc/docker/daemon.json
加入以下的代码
{
    "registry-mirrors":["<your accelerate address>"]
}

3.打包自己的springboot项目

mvn package

将jar包上传到服务器上

4.创建dockerfile

注意事项:dockerfile要和jar包在同一个路径下才可以,不然会访问不到
#创建Dockerfile文件
touch Dockerfile 

#编辑Dockerfile文件
vim Dockerfile

#输入以下内容,注意看有些包名你要改成自己jar包文件
FROM java:8
EXPOSE 81
ADD boot-docker-0.0.1-SNAPSHOT.jar boot-docker.jar
RUN sh -c 'touch /boot-docker.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /boot-docker.jar" ]

#参数说明推荐博客:
https://www.cnblogs.com/ling-yu-amen/p/10955361.html



5.开始构建dockerfile

#最后的.不要落了 -t后面代表你要构建的名字
docker build -t boot-docker .

#控制台会输出:
Sending build context to Docker daemon  16.81MB
Step 1/7 : FROM java:8
 ---> 2x5w7e2z3w9e
Step 2/7 : EXPOSE 81
 ---> Using cache
 ---> 2we5x8e62da8
Step 3/7 : VOLUME /slm
 ---> Using cache
 ---> e21x47w2b868
Step 4/7 : ADD boot-docker-0.0.1-SNAPSHOT.jar boot-docker.jar
 ---> Using cache
 ---> 2479weaafca9
Step 5/7 : RUN sh -c 'touch /boot-docker.jar'
 ---> Using cache
 ---> 81w2q36x8waf
Step 6/7 : ENV JAVA_OPTS=""
 ---> Using cache
 ---> 78424q8w2e46
Step 7/7 : ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /boot-docker.jar" ]
 ---> Using cache
 ---> 97458asde771
Successfully built 97458asde771
Successfully tagged bootdocker:latest

6.构建成功后,映射端口启动run

#后面的ID,就是刚刚构成镜像的ID,Successfully后面的那串ID
docker run -d -p 81:81 97458asde771

#查看所有容器 -a代表没有启动的也显示
docker ps -a

#进入容器
docker exec -it 容器id bash

#进入容器后,可以访问一下方法
curl localhost:81/index

#执行无误后代表没有问题,当然有自信,可以省略进入容器那一步,不过至少可以排除点问题

7.控制台输出信息后,代表成功,然后直接windows浏览器访问就可以了;
在这里插入图片描述

8.博主踩过的坑:

①编写dockerfile的时候add一直是查找不到文件,最后发现两个原因,第一个是因为jar包和dockerfile没在同一个文件,第二个是因为add 不需要写jar包的绝对路径或者完整路径,只需要写文件名称就可以了,因为他在同一个目录下。
在这里插入图片描述

②因为博主反复折腾了很多遍,然后docker居然崩掉了,报了一个too often,访问太频繁的错误给我,然后重启也不行,关掉也不行,最后上网查,将daemon.json改成daemon.conf,修改了个后缀就可以了,现在我也不清楚原因。
(解决思路:改成.conf这个文件就不会生效,所以才会启动起来,然后改回.json启不起来是因为文件的json格式错误,要认真检查,然后在输入:systemctl daemon-reload,重载一下配置,然后再重启,就没问题了)
在这里插入图片描述

mv /etc/docker/daemon.json /etc/docker/daemon.conf

③dockerfile也运行成功了,但是浏览器还是访问不了,这个搞了好久好久。最后发现是个大乌龙。因为博主是用宝塔的,我以为宝塔的端口放行了就可以了,没想到原来还要放行阿里云服务器的安全组,最后放行之后就解决了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值