【第三十七章】 springboot+docker(手动部署)
一、下载centos镜像
- docker pull hub.c.163.com/library/centos:latest
- docker tag containId centos:7
- docker run -i -t -v /Users/enniu1/Desktop/docker-data/software:/mnt/software centos:7
- -i:以"交互模式"运行容器
- -t:表示容器启动后会进入其命令行
- -v:数据卷,这里将宿主机的/Users/enniu1/Desktop/docker-data/software目录(宿主机存放软件目录)挂载到容器的/mnt/software目录(容器存放软件目录)
- 这里是为了让容器直接共享宿主机的/Users/enniu1/Desktop/docker-data/software目录下的软件
二、宿主机下载jdk之后移动到/Users/enniu1/Desktop/docker-data/software
三、容器内解压jdk
- cd /opt
- tar -zxf /mnt/software/jdk-8u102-linux-x64.tar.gz -C .
- 将/mnt/software/jdk-8u102-linux-x64.tar.gz(直接共享的宿主机的挂载目录)解压到当前目录
四、设置环境变量
- vi ~/.bashrc,添加如下两句
- export JAVA_HOME=/opt/jdk
- export PATH=$PATH:$JAVA_HOME/bin
- source ~/.bashrc
- 使文件生效
- java -version进行测试
五、创建自己的镜像:zjg/jdk8:v1.0(第一种创建镜像的方式)
- exit退出容器
- docker commit 86e6187ea166 -m"install jdk8 to centos7" zjg/jdk8:v1.0
- 86e6187ea166:原本的centos的容器id
- zjg/jdk8:v1.0:镜像名与tag
六、编写代码并使用maven install为jar包,拷贝到与Dockerfile相同的包下
建立一个简单的springboot项目即可。
二者均在/Users/enniu1/Desktop/docker-data/file目录下
七、编写Dockfile文件
#first java application FROM zjg/jdk8:v1.0 ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/ ENV JAVA_HOME /opt/jdk ENV PATH $PATH:$JAVA_HOME/bin CMD ["java","-jar","/opt/jar/myservice1-docker-1.0-SNAPSHOT.jar"]
说明:
- #注释
- FROM zjg/jdk8:v1.0
- 基于哪个镜像进行创建
- ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
- 将宿主机的myservice1-docker-1.0-SNAPSHOT.jar拷贝到容器的/opt/jar/目录下
- 注意:这里的myservice1-docker-1.0-SNAPSHOT.jar最好与Dockerfile在同一个文件夹下,否则可能有问题(使用绝对路径和相对Dockerfile的路径都有问题)
- 注意:/opt/jar/必须带有后边的"/"(目录),如果是/opt/jar这样的话,容器会创建一个jar文件而非目录
- 将宿主机的myservice1-docker-1.0-SNAPSHOT.jar拷贝到容器的/opt/jar/目录下
- ENV JAVA_HOME /opt/jdk
- ENV PATH $PATH:$JAVA_HOME/bin
- CMD ["java","-jar","/opt/jar/myservice1-docker-1.0-SNAPSHOT.jar"]
- 容器启动之后,执行"java -jar /opt/jar/myservice1-docker-1.0-SNAPSHOT.jar"
八、创建服务镜像(第二种创建镜像的方式)
- docker build -t="zjg/myservice1docker:v1.1" /Users/enniu1/Desktop/docker-data/file
- -t:指定镜像名与tag
- /Users/enniu1/Desktop/docker-data/file:dockerfile所在的目录
build日志如下:
Sending build context to Docker daemon 13.8 MB Step 1 : FROM zjg/jdk8:v1.0 ---> e7b4cf41e531 Step 2 : ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/ ---> ea8401c3ee2e Removing intermediate container da2e0b518a1f Step 3 : ENV JAVA_HOME /opt/jdk ---> Running in db5d6bed3872 ---> 2c123cd7d20f Removing intermediate container db5d6bed3872 Step 4 : ENV PATH $PATH:$JAVA_HOME/bin ---> Running in 66bbcdf76dfb ---> 38ce4cac8d38 Removing intermediate container 66bbcdf76dfb Step 5 : CMD java -jar /opt/jar/myservice1-docker-1.0-SNAPSHOT.jar ---> Running in 9359f360c777 ---> 1bbfc1635a71 Removing intermediate container 9359f360c777 Successfully built 1bbfc1635a71
每一个step都会创建一层镜像,以上就会创建五层镜像,在删除镜像的时候就会看出,会删除五层镜像。
- docker images
九、启动测试
- docker run -d -p 8014:8080 1bbfc1635a71
- 浏览器访问:localhost:8014/docker/hello(自己springboot项目中的一个controller路径)
【第三十七章】 springboot+docker(手动部署)的更多相关文章
- 第三十七章 springboot+docker(手动部署)
一.下载centos镜像 docker pull hub.c.163.com/library/centos:latest docker tag containId centos:7 docker ru ...
- 程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索
第三十六~三十七章.搜索智能提示suggestion,附近地点搜索 作者:July.致谢:caopengcs.胡果果.时间:二零一三年九月七日. 题记 写博的近三年,整理了太多太多的笔试面试题,如微软 ...
- Gradle 1.12用户指南翻译——第三十七章. OSGi 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- “全栈2019”Java多线程第三十七章:如何让等待的线程无法被中断
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java第三十七章:类与字段
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 第十七章 springboot + devtools(热部署)
技术介绍 devtools:是boot的一个热部署工具,当我们修改了classpath下的文件(包括类文件.属性文件.页面等)时,会重新启动应用(由于其采用的双类加载器机制,这个启动会非常快,如果发现 ...
- SpringBoot | 第三十七章:集成Jasypt实现配置项加密
前言 近期在进行项目安全方面评审时,质量管理部门有提出需要对配置文件中的敏高文件进行加密处理,避免了信息泄露问题.想想前段时间某公司上传github时,把相应的生产数据库明文密码也一并上传了,导致了相 ...
- 第三十八章 springboot+docker(maven)
回顾上一章的整个部署过程: 使用"mvn install"进行打包jar 将jar移动到与Dockerfile文件相同的文件夹下 编写Dockerfile文件 使用"do ...
- 第二十七章 springboot + zipkin(brave-okhttp实现)
本文截取自:http://blog.csdn.net/liaokailin/article/details/52077620 一.前提 1.zipkin基本知识:附8 zipkin 2.启动zipki ...
随机推荐
- 帝国cms调用缩略图和具体文章的方法
我们在用帝国cms建站的时候经常会在首页或者分类页等调用一些文章,如果文章带有展示图也把图片调用出来.帝国cms调用缩略图和具体文章怎么操作呢?我们用帝国cms的灵动标签[e:loop],只要记住常用 ...
- spring的统一异常处理
在控制器(controller)中添加统一异常处理的方法,在方法前面加@ExceptionHandler[(异常类.class)]注解
- mysql 用户授权命令
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_root_password' WITH GRANT OP ...
- Keepalived+HAproxy实现高可用负载均衡
总概: Keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态, ...
- hadoop streaming怎么设置key
充分利用hadoop的map输出自动排序功能,能够有效提高计算效率.Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为valu ...
- docker 批量删除容器和镜像
docker 批量删除容器和镜像 1,删除单个镜像或者容器 docker rmi 镜像ID/镜像名字:TAG docker rm 容器ID/容器名字 1.停止所有的container,这样才能 ...
- jquery 实现iframe 自适应高度
转自: http://www.cnblogs.com/luluping/archive/2009/04/17/1437843.html 超级简单的方法,也不用写什么判断浏览器高度.宽度啥的.下面的两种 ...
- linux命令:linux文件处理命令
命令格式 : 命令 [-选项] [参数] 例:ls -la /etc 说明:1)个别命令使用不遵循此格式,[]代表可选 2)当有多个选项时,可以写在一起 3)-a等于 --all,调用简化选项用 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON AngleLl
zw版[转发·台湾nvp系列Delphi例程]HALCON AngleLl procedure TForm1.Button1Click(Sender: TObject);var Row1, Row2 ...
- zookeeper 详解
是 分布式 协调 服务. ZK的工作:注册:所有节点向ZK争抢注册,注册成功会建立一套节点目录树,先注册的节点为Active节点,后注册节点成为standby;监听事件:节点在ZK集群里注册监听动作: ...