Docker部署SpringBoot项目简单实例

此类文章网上很多,但是自己按着做也会出各种各样的错误。记录我踩的坑
目标是在centos7中部署springboot项目,在外部能访问。

先上springboot代码简单的一批

@SpringBootApplication
@RestController
public class Application {
	
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
	@RequestMapping("/docker")
	public String test(){
		System.out.println("hello docker");
		return "hello docker!";
	}

}
安装centos7就不介绍了,直接看安装docker运行。运行下面命令
yum -y install docker
然后开启docker
service docker start
就这么简单,当然前提是centos7,6.x版本不要这样。
接下来把springboot项目打成jar,在本地运行没问题的情况下留作备用。

然后开始写Dockerfile
#基础镜像jdk8,不需要tomcat因为springboot内置
FROM java:8
#挂载,把主机的/var/lib/docker/volumes目录下的内容挂在到容器的/tmp下
VOLUME /tmp
#资源复制,把本机的某个内容复制到容器的指定位置
ADD docker-spring-boot-0.0.1-SNAPSHOT.jar /docker/app.jar
#容器启动时运行的命令,java -jar /docker/app.jar 是不是很熟?
ENTRYPOINT [ "java", "-jar", "/docker/app.jar" ]

保存好,然后Dockerfile和打成的jar放到 centos7的某个目录下
然后开始生成镜像,-t 后面跟镜像的tag,符号. 根据当前目录的Dockerfile生成
docker build -t springboot .
结果如下,我这里已经下载好了jdk8的镜像,所以这里不进行下载,如果严格按照步骤来,这里会有下载进度
[root@localhost volumes]# cd /docker/
[root@localhost docker]# ls
Dockerfile  docker-spring-boot-0.0.1-SNAPSHOT.jar
[root@localhost docker]# docker build -t springboot .
Sending build context to Docker daemon  14.5 MB
Step 1/4 : FROM java:8
 ---> d23bdf5b1b1b
Step 2/4 : VOLUME /tmp
 ---> Running in 8533b6e2260e
 ---> e87fe636335a
Removing intermediate container 8533b6e2260e
Step 3/4 : ADD docker-spring-boot-0.0.1-SNAPSHOT.jar /docker/app.jar
 ---> 829ea006cdf3
Removing intermediate container fec8599cd945
Step 4/4 : ENTRYPOINT java -jar /docker/app.jar
 ---> Running in a8dba92f6e18
 ---> 80f2876c32db
Removing intermediate container a8dba92f6e18
Successfully built 80f2876c32db

当然如果你是用的公共仓库会很慢很慢,甚至报错下不下jdk8来。我这里用了加速器,阿里云的。
直接把下面这段复制到你的虚拟机运行就可以:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://c6n8vys4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

然后你就会发现下载速度很快了。好的,接下来继续。创建并且运行容器
docker run -d -p 8080:8080 --name boooc springboot
解释下:run乍一看是运行,其实不是run=create+start ,-d 表示后台运行, -p是映射端口前面是宿主机端口,后者是容器端口,因为我们jar的端口是8080所以后者必须是8080,前面可以随意。--name表示创建容器的名字,springboot表示镜像tag

运行完会返回一个id,通过docker ps可以查看运行的容器
[root@localhost docker]# docker run -d -p 8080:8080 --name boooc springboot
b0a49bfb661f1c48d3a1f3f0e6c06272ed6d59649a86867206c463b5abd1160a
[root@localhost docker]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
b0a49bfb661f        springboot          "java -jar /docker..."   8 seconds ago       Up 7 seconds        0.0.0.0:8080->8080/tcp   boooc

然后再自己为win下访问http://宿主机IP:映射宿主机端口/docker就能访问到了。宿主机这里为虚拟机。当然要确保防火墙关闭。
我的坑:我是按上面步骤来的但是!但是!最后访问不到!!都能ping通,win和虚拟机,虚拟机和容器都能ping的通但是就是访问不到。一开始我以为端口的问题,telnet ip 8080,但是能进去,又netstat -nlpt查看端口情况,8080也确实在列。后来用curl 宿主机可以访问,win也同样可以。然后换了个浏览器。。。好了。ie不好用,win10自带浏览器也不好用。。。完。

注:以后只用谷歌,在此谢谢师傅

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackson陈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值