本文并不是一篇Docker的入门文章, 而是面向对Docker有必定了解的开发人员, 文章不会介绍如何安装Docker, 以及什么是Docker镜像,什么是Docker容器这些概念,若是须要了解请前往Docker官方文档。这里咱们只探讨一下Docker在开发中的实践,或者说咱们怎么用Docker来帮助咱们在开发中受益。前端
随着NodeJS的发布,前端便像嗑了药似的疯狂发展,各类概念,框架,插件层出不穷,致使前端小伙伴压力很大(鄙人后端,前端不大专业,若有不当请包涵),别的不说,就一个前端开发环境的搭建可能就要花费很长时间,一个npm install执行半天,中途还有可能由于本机环境的缘由报各类摸不着头脑的错,并且node_modules文件夹异常庞大,win下删都删不掉,常常心生骂娘冲动。所以本文就实践一下如何用Docker来帮咱们解决前端开发中遇到的这些问题,最后也会简单分析下后端的Docker应用。node
话很少说,咱们开始,直接上项目,码代码....
假如咱们有以下项目 dockerdemo:
webpack
很明显这个项目依赖了不少插件(项目比较早,用的grunt,用gulp,webpack的小伙伴勿喷),若是是您的第一个项目的话你大概须要作如下步骤去搭建整个开发环境。web
其间还要经历各类等待,甚至出现不明不白的错误。下面咱们就一步步用Docker搭建咱们的前端开发环境docker
分析一下不难发现,咱们须要的是一个安装了node,npm的环境,若是咱们能有一个预装好的系统那就最好不过了,幸运的是Docker刚好能知足咱们的这个需求,去DockerHub 搜一下就会发现官方提供了node的镜像,并且各个版本包罗万象,这样事情就好办了,开始写Dockerfile构建咱们的镜像。没错咱们的镜像就是基于官方node镜像。假如你本机的项目目录位于/home/xiaoqiang/projects/dockerdemo,咱们在项目目录下新建一个Dockerfile文件,并添加以下代码:express
FROM node:4.4.7 RUN mkdir -p /home/project/dockerdemo ADD . /home/project/dockerdemo WORKDIR /home/project/dockerdemo VOLUME /home/project/dockerdemo EXPOSE 9000 35729 RUN npm install -g grunt && npm install -g bower CMD ["./grunt_release.sh"]
grunt_release.sh以下npm
#!/bin/sh npm install bower install --allow-root grunt build
分析下上面文件的内容:json
好了,代码分析完了,总之大致思路就是咱们把本机项目目录映射到容器中去,而且在容器中公开能够访问网页的端口,并在容器启动是执行相应命令,如安装插件,启编译,启动server等。gulp
Dockerfile写完了下面就是基于该文件构建镜像了,代码很简单:
build_docker.sh后端
#!/bin/sh sudo docker build -t dockerdemo .
执行该命令等待完成后,咱们就能够基于该镜像运行咱们的容器了,或者说咱们的环境基本搭建完成了。
运行容器的命令也很简单,代码以下: run_docker.sh
sudo docker run -it --rm --name dockerdemo -v /home/xiaoqiang/projects/dockerdemo:/home/project/dockerdemo -p 9000:9000 -p 35729:35729 dockerdemo
这样你就能够享受编码的愉快过程了,而不用头疼环境的搭建了。
你可能以为还得写这么多命令多么麻烦,若是这么想说明你仍是没有理解其中的道理。
Docker技术还比较年轻,对于它的理解目前是仁者见仁,智者见智,很难说最佳实践是什么,这一套只是个人一些思考跟应用,可能有不少不合适不合理不正确的地方,还望指点,若是感受有用还望不吝点赞~~~