最近在做微信小程序,后台用的Springboot。以前一直放在服务器的Tomcat里跑。
感觉不爽,想试下“风靡全球”的Docker来跑一跑。
参考了这位老哥教程:https://blog.youkuaiyun.com/caox_nazi/article/details/78366584
没想到遇到很多阻力。
1、首先在我的Centos7(云服务器)上安装Docker -CE
在配置加速器的时候遇到了坑,配置文件少了个符号 命令:sudo vim /etc/docker/daemon.json
坑:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
注:一定要配置加速器,不然pull速度(如下图)
配置了加速器。嘻嘻
配置加速器教程:https://blog.youkuaiyun.com/u013372487/article/details/77169430
2、安装完毕。
输入docker info
有点东西 ,美滋滋
3、打包本地springboot项目
。。。(按照教程里走)
当当当。。。。坑来了,我嫌教程里jar包名字不好看 ,自己取了个符合自己气质的jar包名,哈哈。然而Dockerfile里什么都没改
完了 出毛病了
4、执行docker打包命令 sudo docker build -t docker .(这里有个点)
完了完了
跳出来一个找不到 docker_spring_boot.jar 的错误。原本没看到,就屁颠屁颠去发布去了。
发布也是用的教程里的-的-d(后台运行)命令。(docker run -d -p 8080:8080 docker)
结果错误也没报,发布没成功。本地远程都访问不了 localhost:8080
找了半天,终于发现是Dockerfile问题。于是乎改成和jar包符合。(我的jar包名:bzmovie-docker.jar)
OK.大功告成。
5、发布应用。
最后一个坑。
命令:docker run -d -p 8080:8080 bzmovie
运行此命令,发现还是访问不了。改成9090:9090 ,8081:8081....
还是不行,又找半天,找到发布docker应用的日志,发现tomcat启动在80端口。又想到了docker的端口映射机制:
**************************************************************
将容器指定端口指定映射到宿主机的一个端口上。
1 |
|
以上指令会将容器的80端口映射到宿主机的8000端口上。
***************************************************************
冷静分析了一下。
(1)假如我想用我的ip:8080 这样访问
则我应该这样发布
docker run -d -p 8080:80 bzmovie(前面是springboot中tomcat的发布端口。后面我想能访问的端口。并且能同时在多个端口发布同一个应用)
(2)如果我想直接ip访问,即ip:80,命令应该这样
docker run -d -p 8080:80 bzmovie
查看docker进程。果不其然。
至此网站已经能正常访问。本人小菜鸟一枚。啥都没准备就直接把Docker拿过来想开箱即用,遇到了不少坑。在此记录一下,避免下次遇到,同时和大家共勉!嘻嘻