专栏首页技术专栏SpringBoot Docker 部署

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 条评论
登录 后参与评论

相关文章

  • 初识数据仓库和维度建模的一些理解和感悟

    校招面试的时候面的是java后台,收到的职位offer是大数据相关的东西,虽然啥也不会,不过想到这也是一个比较火的领域,就毅然决然的接受了这个offer。

    Meet相识
  • docker 常用命令

    docker run --name (容器的名字) -d -p hostPort:containerPort 镜像名

    Meet相识
  • eclipse/che 命令 -ubuntu

    访问che的webide,点击左侧stacks,在右侧的列表中选择自己需要的运行时环境点进进入详情界面

    Meet相识
  • Jmeter(三十二)_搭建本地接口自动化环境

    我们在学习接口自动化的时候,最理想的状态是在公司有项目可以操作。大部分时候我们并没有可以练习的项目,因此练习接口无从谈起,只能找一些开放的api来练一练,但是这...

    飞天小子
  • 与挖矿斗争的日子,我连 Docker 都删了

    接着检查了服务器 CPU 的使用情况,未发现有挖矿程序在运行,CPU 使用率只有 5% 左右。当时笔者存在侥幸的心理,觉得 2C4G 的服务器配置应该不太适合挖...

    猿芯
  • 使用docker-compose部署envoy前端代理遇到的坑

    上一篇文章中我们介绍了Envoy的简单配置,Envoy有三种部署方式,这篇文章中我们来介绍其中的一种部署方式为前端代理。

    陌无崖
  • docker|docker安装mysql数据库

    如没有安装,可参考docker官网,windows/mac 直接下载安装包安装就可以了 下载地址: https://www.docker.com/produc...

    微笑的小小刀
  • Docker安装mysql

    先给大家说一下什么是docker镜像,小优的理解就是就是可以运行的产物,但是是个集合。比如w7操作系统(只是一个操作系统)

    猿码优创
  • 最简单的docker教程:在docker里运行nginx服务器

    命令行docker search nginx搜索名为nginx的docker image,返回结果的第一个,github上有10293个star,这就是我们想要...

    Jerry Wang
  • 构建 Docker registry 私有镜像,解决docker私有仓库push出错问题

    OPTIONS=’–selinux-enabled --insecure-registry 192.168.137.17:5000’

    周小董

扫码关注云+社区

领取腾讯云代金券