设为首页 收藏本站
查看: 1091|回复: 0

[经验分享] Docker 打包 部署

[复制链接]
累计签到:5 天
连续签到:1 天
发表于 2017-12-5 16:10:51 | 显示全部楼层 |阅读模式
Docker 打包 部署
  一贯的开场白,大家好:
    开始学习Spring Boot ,同时也再学习 Maven 自动化构建。  项目的部署环境是 Linux 服务器,Docker容器。  
    之所以写这篇博客,是因为我在Dcoker 部署中遇到了一些问题,因为也是初学,请教了一些同事。在问题解决后,我又按照回忆,接着从头开始了一遍,加深了一些映像。希望这篇高博客也能对大家又一定如帮助。
    温馨提示:如果 百度烂了都查不出你想要的结果的话,多半是你该去相关的官方站点看资料了,比如 spring,  它的官网文档还是很棒的(最少大家都这么说)。
    开始今天的正题,俩个假设:
    (1).此刻我假设你已经把你的 通过 maven  自动化构建的 java demo 打包了,就是说生成了以 jar 或者 war 结尾的包文件了。  
    (2).假设你已经成功安装 docker 。 
    如果上面的俩个假设为True的话,那您可以接着往下看。
  Docker相关术语:
  (1).镜像、容器、仓库
    Docker的特点:
  (1).关键字:集装箱、标准、隔离。
  Docker的部署实践:
  1.创建dockerfile
  注意我提到的假设:你的jar包或者war包都已经打包成功,并且docker安装成功。
  dockerfile 的内容如下: 



FROM azul/zulu-openjdk:8
VOLUME /home/work/springDemo
ADD springDemo-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

  FROM:基于哪个镜像
  VOLUME:可以将本地文件夹或者其他container的文件夹挂载到container中
  ADD:将文件<src>拷贝到container的文件系统对应的路径<dest>
  RUN:RUN命令将在当前image中执行任意合法命令并提交执行结果。命令执行提交后,就会自动执行Dockerfile中的下一个指令
  ENTRYPOINT:container启动时执行的命令,但是一个Dockerfile中只能有一条ENTRYPOINT命令,如果多条,则只执行最后一条
  关于Dockerfile的介绍,可以查看:



https://www.dwhd.org/20151202_113538.html?lan=cn&lan=cn
  重点:dockerfile 和 jar包或者war包的位置
DSC0000.png

  注意:新创建的  Dockerfile 文件需要和  jar 的在一个文件夹下。
  2.Jar包的生成
  大家看到上图中的.jar 的包可能会有困惑,这个包是怎么生成的呢?下面我们来看看这个包是如何生成的。
  由于我是通过maven的方式来构建项目的,所以也是通过maven的方式来的build的,当然前提依然是你的环境中安装了 maven,具体操作我们来看看截图。
DSC0001.png     

  经过上面的操作后,就build 好了 jar包。   (花絮:你们知道一个用惯了windows 的人截这张图付出了多么大的代价吗?)
  3.生成镜像
DSC0002.png  

  shell 命令说明:重点是你要 cd 到存放Dockerfile 和 jar包或者war包所在的文件夹下面。
  命令:sudo docker build -t springbootdemo .
  注意:命令后面的  .    要带上 。
  -t参数的含义我记不清了,你可以通过 sudo docker build --help 来查看相关函数的解释。  springbootdemo是build的镜像名称。
  以上操作完成了Docker 镜像的创建。检验镜像是否创建成功,命令: sudo docker images   ,可以看到springbootdemo就是刚才创建的镜像。
DSC0003.png

  4.启动容器
  容器其实也相当与镜像的载体。
  容器的启动命令截图:
DSC0004.png

  启动命令:sudo docker run -d -p 8080:8080 springbootdemo
  -d -p 的参数含义我也忘却了,大家可以查查。   8080:8080是一个端口的映射,它的具体逻辑和原理,我建议大家学习Docker中仔细看看,springbootdemo 就是我上面提到的镜像文件。
  查看当前运行中的容器:sudo docker ps
DSC0005.png

   5.验证
  验证环节就可看看我们的  Demo是否部署成功了,如果你的jar包或者war包跟我以一样,是web程序的话,就可以通过浏览器来测试。
DSC0006.png          

  sorry,我比较懒,我只在我的web Demo中写了一个 alert。 这就是最终的效果。
  好了,就写到这了,如过大家对maven 自动话构建感兴趣的话,给我留言,我会抽时间写一篇针对maven构建的博客。我是百灵,如果文中有错误,欢迎大家指正。
    

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-420871-1-1.html 上篇帖子: web知识-平时工作生活中的总结 下篇帖子: 使用Grafana 展示Docker容器的监控图表并设置邮件报警规则
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表