SpringBoot Docker 部署

昨天尝试了下SpringBoot 的Docker部署,虽然踩了很多坑,但是总算是弄出来了,下面整理一下思路,方便以后使用。 这里部署的难点,主要是我的SpringBoot项目用到了redis和mysql,如果直接在一个镜像里安装redis和mysql,那就和在虚拟机上部署一样了,所以我把SpringBoot的jar包和redis,mysql分别做成了三个镜像

1.部署mysql

  • Dockerfile
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脚本
mysql -uroot -proot
create database sell;
use sell;
source sell.sql;

2.部署redis

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
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
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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何为Ubuntu 16.04设置Ghost一键式应用程序

使用腾讯云的一键式Ghost应用程序,您可以预先安装带有Ghost的腾讯CVM。有一些命令行可以完成安装,然后您就可以使用一个简单而强大的安全博客工具,让您可以...

26350
来自专栏编程

手把手教你制作漏洞复现环境

在学习的过程中, 是否看到别人搭建的练习平台心痒痒呢? 通过本篇教程的学习, 将手把手教你搭建属于自己的漏洞测试利用环境, 不管是自己学习还有分享给小伙伴都将轻...

382100
来自专栏崔庆才的专栏

Docker 入门教程

19830
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Docker和Docker Compose配置持续集成测试环境

持续集成(CI)指的是开发人员尽可能频繁地集成代码,并且在自动化构建将每个提交合并到共享存储库之前和之后都要进行测试的实践。

6600
来自专栏CRPER折腾记

Docker折腾记: (1)构建yapi容器,从构建发布到可用

Docker/Linux/Node基础, 比如Linux和docker的常用命令,shell的编写等等

43820

使用Helm将应用程序部署到IBM Cloud上的Kubernetes

Helm是Kubernetes的包管理器。借助Helm,您可以非常方便地将应用程序,工具和数据库(如MongoDB,PostgreSQL,WordPress和A...

33990
来自专栏编程坑太多

『中级篇』Docker 水平扩展和负载均衡(40)

PS:Docker的scale 可以扩展,也可以所有,他们自动来控制的。web=10 可以改成5 其中的6,7,8,9,10就被删除了。

61730
来自专栏Laoqi's Linux运维专列

Docker 配置安装(Ⅲ)

16860
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Docker Bench对Docker主机进行安全性审核

使用Docker来容纳您的应用程序和服务可以为您提供开始即用的一些安全优势,但默认的Docker安装仍然有一些空间可用于一些与安全相关的配置改进。在互联网安全中...

17930
来自专栏阮一峰的网络日志

Docker 入门教程

2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。 但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?本文...

37030

扫码关注云+社区

领取腾讯云代金券