Linux RHEL docker上运行springboot项目,步骤略有小坑,现经过半小时的折腾,总结流程如下:
1)linux RHEL安装docker
很简单,
yum install docker
2)docker环境安装(例如JDK)
但这里先别急着安装,可以在工程里面配置运行环境,届时会自动安装
3)springboot工程建立
这里注意不要用默认的springboot项目ide,推荐采用STS的maven工程项目,并且在建立工程的时候选取maven的archetype
参考git上的spring-boot-docker用法
工程创建好了之后,别忘记导入src/main/docker文件夹,里面有重要的DockerFile引导文件和json(aws专用,没有似乎也不影响)
此工程框架自带的pom里面含有docker打包的一些插件,根据插件会在target目录生成或拷贝相应的文件(DockerFile,jar,zip等)
DockerFile里面第一行似乎有问题(这似乎是Ubuntu的风格),
FROM dockerfile/java:oracle-java8
应该改为
FROM java:latest
反正需要根据实际项目需求修改DockerFile/pom,xml
4)mvn打包,生成jar,
mvn clean package
然后将DockerFile一并移到linux RHEL的目标文件夹下(建议放到空文件夹下)
注意不要放到非空文件夹下,否则后面会不小心把所有文件都上传到container,那就尴尬了
5)docker命令build刚刚的jar包
docker build -t docker-boot-demo .
注意上述的命令行后面的".",代表当前路径下所有文件,这里会触发上传、环境镜像的下载更新等多个操作
最后会提示Successfully built xxxxxx (xxxxxx代表自动生成的uuid)
输入命令行docker images, 可以看到相应的依赖镜像、本体jar镜像等信息
6)运行docker镜像,执行命令:
docker run -p 8085:8080 -t xxxxxx (out:in 代表端口外部:端口内部映射关系,内部端口在DockerFile里面有声明,xxxxxx代表uuid或者镜像名)
很快就可以发现熟悉的boot命令行启动了,此时访问localhost:8085/就可以看到相应的Hello World!了
接下来,可以做如下的事情:
打包发布可以用CI/CD集成,即将所有流水线操作脚本化,可以配置到Jenkins或者k8s,具体方案待研究
docker镜像可以上传到nexus私服或者其他docker的registry