前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot Docker 部署

SpringBoot Docker 部署

作者头像
Meet相识
发布2018-09-12 16:09:53
4.1K0
发布2018-09-12 16:09:53
举报
文章被收录于专栏:技术专栏技术专栏

昨天尝试了下SpringBoot 的Docker部署,虽然踩了很多坑,但是总算是弄出来了,下面整理一下思路,方便以后使用。

这里部署的难点,主要是我的SpringBoot项目用到了redis和mysql,如果直接在一个镜像里安装redis和mysql,那就和在虚拟机上部署一样了,所以我把SpringBoot的jar包和redis,mysql分别做成了三个镜像

1.部署mysql
  • Dockerfile
代码语言:javascript
复制
FROM mysql
ADD sell.sql sell.sql  //sell.sql 为项目sql脚本
//这里应该其实应该写执行1.登录mysql  2.创建数据库 3.导入sql脚本 的命令
//另一种直接在命令行写

另一只直接在构建镜像的时候就把数据导入工作做好的请看这篇文章http://www.zhimengzhe.com/shujuku/MySQL/317712.html

  • 构建镜像 docker build -t mysql:sell .
  • 启动容器 docker run --name sell/mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root mysql:sell //这里实际上不应该-p 因为除了api接口其他的都应该隐藏,我是为了测试方便,所以暴露了
  • 导入mysql脚本
代码语言:javascript
复制
mysql -uroot -proot
create database sell;
use sell;
source sell.sql;
2.部署redis
代码语言:javascript
复制
docker pull redis;
docker run -d --name sellredis redis;  //这里我的redis写的比较简单,所以就直接run了
3.部署springboot
  • 打包这个就不说了,不过需要提醒一点,打包先按照链接本地数据库的方式打包,保证不报错,然后把jar包移到docker build目录
  • 然后把application.yml复制一份到docker build目录,这里如果application.yml和jar包在同一目录,那么启动的时候会有限加载同目录下的application.yml而不是jar包内的,这样就可以再运行的时候改变ip了,具体参考http://www.cnblogs.com/xiaoqi/p/6955288.html
  • 进入mysql,redis容器内部,这里以mysql为例docker exec -it mysqlsell bash,然后使用cat /etc/hosts查看ip
代码语言:javascript
复制
root@63b5997e1f12:/data# cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3  63b5997e1f12   //主要记住这个ip 这是容器内互联需要用到的ip
root@63b5997e1f12:/data# exit
exit
  • 修改application.yml中的数据库和redisurl的ip为刚刚查看到的ip,在启动容器的时候--link的参数是 链接容器名:别名,也可以用这个别名代替ip
  • 编写dockerfile
代码语言:javascript
复制
FROM hub.c.163.com/xbingo/jdk8:latest
ADD sell.jar sell.jar
ENTRYPOINT ["java","-jar","/sell.jar"]
  • 构建 docker build -t sell:v1 .
4.启动

docker run -d -p 9000:9000 --name selltest --link sellmysql:mysql --link sellredis:redis sell:v1

以上用到的docker命令不懂的请参考 http://www.jianshu.com/p/7f457cb1bcb7

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.08.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.部署mysql
  • 2.部署redis
  • 3.部署springboot
  • 4.启动
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档