昨天尝试了下SpringBoot 的Docker部署,虽然踩了很多坑,但是总算是弄出来了,下面整理一下思路,方便以后使用。
这里部署的难点,主要是我的SpringBoot项目用到了redis和mysql,如果直接在一个镜像里安装redis和mysql,那就和在虚拟机上部署一样了,所以我把SpringBoot的jar包和redis,mysql分别做成了三个镜像
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 -uroot -proot
create database sell;
use sell;
source sell.sql;
docker pull redis;
docker run -d --name sellredis redis; //这里我的redis写的比较简单,所以就直接run了
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
FROM hub.c.163.com/xbingo/jdk8:latest
ADD sell.jar sell.jar
ENTRYPOINT ["java","-jar","/sell.jar"]
docker run -d -p 9000:9000 --name selltest --link sellmysql:mysql --link sellredis:redis sell:v1
以上用到的docker命令不懂的请参考 http://www.jianshu.com/p/7f457cb1bcb7