先来思考个问题,新机器跑一个常规springboot项目要几步?
1. 下载并配置java环境、mysql环境,redis环境(6步)
2. 初始化mysql数据库,导入sql文件(2步)
3. 下载jar包,启动(2步)
大概分为零零碎碎的十多步,每块又内容繁杂,而且换一台机器又是一模一样的浪费时间方法,所以今天就介绍利用docker-compose一步完成【基于docker环境(win,linux均可),一条指令完成】。
docker是什么?
基于问题出发简单解释一下,配环境是win10系统里面很痛苦的事情,各种软件各种环境,网上博客鱼目混珠,怎么配置环境,当然是找身边大佬喝杯奶茶,让精通配置安装各种软件的他来帮助你。同时互联网上有很多这样的思想,让专业的人来办专业的事情来节省一些重复又麻烦的事情,例如知识付费,代理找资源,淘宝电脑远程协助服务等等。
而docker的思想就基于上面融入了容器镜像(虚拟机)思想,既然有人配置过了,走过一遍流程,那我直接把他的流程、配置的环境和需要的依赖最小化封装起来(镜像),然后别人使用就直接拿来运行(类似脚本,你执行一次(镜像)就能产生和镜像发布者一样操作的效果),存在容器中,容器又能基于镜像多次创建。这个就是docker。
本文将从零构建属于自己的docker-compose【内含很多大坑】
github仓库链接 【示例项目】
docker-compose一键运行 【示例项目】
- 如何构建自己的镜像,和仓库?
-
- springboot项目打包,基于jdk8创建镜像
- 给镜像打tag,上传dockerhub仓库
- docker-compose构建以及各种环境问题解决。
-
- 创建docker-compose文件
- 拉取jar包镜像-拉取mysql镜像-拉取redis镜像
-
- 容器初始化顺序问题解决
- jar包跨容器访问数据库失败
1. 创建jar包镜像
1.1 idea将springboot项目打包成Jar包
Java开发基础,jar包就是封装好的springboot程序,使用java -jar命令启动
maven package即可打包好jar
本文jar包为:face-0.0.1-SNAPSHOT.jar
1.2 创建镜像
jar包同目录下创建以下文件
取名 Dockerfile,读写完记得删去后面的txt
# Docker image for springboot file run
# VERSION 1.0.0
# Author: 404name
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER 404name<name404@163.com>
# 映射文件
VOLUME /tmp
# 将你的jar包改名为app.jar
ADD face-0.0.1-SNAPSHOT.jar app.jar
# 这里指jar包里面填的端口,才能映射暴露出去
EXPOSE 8080
# 启动脚本
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
1.3 构建镜像
先要有docker环境【链接】
当前目录下运行
docker build -t your_image_name .
例如
docker build -t 404name/sign-in-system:1.0.0 .
这里404name对应我dockerhub的用户名,后面是仓库名:版本 .点表示当前目录