OSX 下利用Docker 配置前端环境
发布在Docker && FE2016年1月22日view:4789
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

想从这篇文章找到一丝希望的朋友,可能要失望了,我只是记录下我这半年,被它搞的最终优化结果。

开始了解,顿生希望

当第一次了解Docker概念的时候,被它的可扩展性,灵活性以及各种牛逼,吹的天花乱坠。由于本职前端,工作环境为Imac。操弄了好久后,终于发现了这个折磨我几个月乃至现在的大问题

本地目录与容器目录之间同步数据效率非常之慢

且听我慢慢道来

理想工作环境

imac 机器只需要安装git + docker

所有的运行环境安装,例如node,php,database等等全部可以安装在容器里面。 这样,本地只需要编辑代码,容器进行编译,执行,及各种代理映射等等。 完成一个正常的工作流程。

事实不是这样子的。。・゚゚・(>д<;)・゚゚・。

问题1 :容器各种限制

  • 重启容器,修改的/etc/hosts会重置
  • 虚拟机,默认空间只有20G,镜像迭代一次,最小1个G的签名。几次就满了
  • 。。。各种操作卡顿

算了,讲讲我的现在的还能说得过去,但是肯定不能生产环境应用的解决方案吧

项目目录

├── Dockerfile
├── docker-compose.yml
├── id_rsa
└── id_rsa.pub

先看Dockerfile

FROM fe_main:alpha
  RUN yum install -y rubygems && gem install -y sass
  RUN ln -s /home/work/app/php/sbin/php-fpm /usr/local/bin/php-fpm 
  ADD id_rsa /home/work/.ssh/id_rsa
  RUN chmod 777 /home/work/.ssh/id_rsa

Dockerfile的作用是从基础镜像fe_main:alpha建立,然后进行后续的补充操作 例如: * 安装sass,php * 把当前目录的id_rsa文件拷贝到容器里面,目的是能够拉取Github上的私人项目

再看docker-compose.yml

web:
    build: .
    command: /usr/bin/supervisord
    ports:
         - "2023:22"
    extra_hosts:
      - "www.mi.com:127.0.0.1"
    container_name: "webDev"
    volumes:
      - /Users/data/dev:/home/work/data/www

docker-compose的作用就是进行多容器管理,我这里只有一个开发服务web,主要用来管理 多接口映射,多hosts修改等繁琐操作。 docker-compose build进行建立新镜像 docker-compose up -d按照配置文件,启动新容器

这样就可以正常启动一个容器了,到这里,都很完美。接下来,才是重点介绍

大杀器 docker-osx-dev

关于最新的docker-machine里面也有介绍安装,我测试的也都是可以的

按照教程安装完毕后, 在当前目录 docker-osx-dev(报错的话,一般是权限问题,换个用户目录试试) 会启动监听,监听目录根据docker-compose.yml里面的volumes来的 即监听本地的/Users/data/dev同步到容器中的/home/work/data/www里面

到这里都很好 ,very good。简直做梦一般,对不对,可以实现同步代码了,容器环境也好了。简直就是理想的工作流嘛。呵呵( ̄(エ) ̄)ゞ

下面来讲述一个悲伤的事实: 我是一个前端, 最重要的工具就是gulp或者webpack或者grunt监听文件改动,自动化编译各种静态文件。上面的流程就变成了这样子:

  • 本地修改文件
  • docker-osx-dev监测到文件修改,进行同步,耗时1s
  • 容器中的gulp监听到文件改变,进行编译。耗时0.5s
  • 文件修改成功 有人说了,看起来还可以接受嘛。我也想这样啊。。。 docker-osx-dev这个工具,监听的时候,经常性的,我修改一个文件,它监听到一堆文件 然后,我的gulp就死了,然后内存就爆了o(╥﹏╥)o PS: 这个工具还算是比较好的 ,bug比较少的,再尝试了诸如。。啦啦的好几个工具之后。

结论

想尝试前端,docker 容器话工作环境的想法,还是等等官方看看有什么好的方案吧。 如果像ubuntu一样,不需要虚拟机那一层的化,简直完美了啊喂。 但是如果开发php"java之类的,我认为还是可以试试的。玩嘛,对不?

评论
发表评论
暂无评论
PUBLISHED IN
Docker && FE

讲述Docker 在前端开发中的应用,以及带来的便捷之处,及使用过程

友情链接 大搜车前端团队博客
我的收藏