<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>vmlinz (Nick Qi)</title>
    <link>https://ruby-china.org/vmlinz</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>使用 IFTTT 的 DASH 做 Rails App 的开发环境</title>
      <description>&lt;h2 id="DASH简介"&gt;DASH 简介&lt;/h2&gt;
&lt;p&gt;DASH 是由 IFTTT 不久前公布的一个开发环境设置工具，它使用了 docker-compose，docker-machine 和 Ansible 作为基础，安装非常简单，只需要执行它的 bootstrap 脚本就可以喝杯咖啡等它设置完成。&lt;/p&gt;

&lt;p&gt;这个工具的主要功能是辅助开发容器化的应用程序，比如之前你使用了 docker-compose 配置过的项目，他能帮你配置本地的 nginx 和 dnsmasq 帮你把自定义域名重定向到你的应用，这样就可以不用在设置 docker-compose 的时候把 nginx 的单独配置放到 docker-compose.yml 里面。&lt;/p&gt;
&lt;h2 id="准备"&gt;准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Homebrew with XCode Command Line Tools&lt;/li&gt;
&lt;li&gt;Homebrew Cask&lt;/li&gt;
&lt;li&gt;Ansible&lt;/li&gt;
&lt;li&gt;VirtualBox&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Docker Machine&lt;/li&gt;
&lt;li&gt;Docker Compose&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装"&gt;安装&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;bash &amp;lt;(curl -fsSL https://raw.githubusercontent.com/IFTTT/dash/master/bin/bootstrap)&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="使用"&gt;使用&lt;/h2&gt;
&lt;p&gt;在配置了&lt;a href="https://docs.docker.com/compose/" rel="nofollow" target="_blank" title=""&gt;Docker Compose&lt;/a&gt;的目录下执行： &lt;code&gt;dev up&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="工作原理"&gt;工作原理&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;它会创建一个名叫‘dev’的 docker machine 虚拟机&lt;/li&gt;
&lt;li&gt;增加一个 zsh 和其他 shell 的配置文件&lt;/li&gt;
&lt;li&gt;将主机的‘.dev’解析指向之前创建的虚拟机&lt;/li&gt;
&lt;li&gt;自动启动&lt;a href="https://hub.docker.com/r/jwilder/nginx-proxy/" rel="nofollow" target="_blank" title=""&gt;nginx proxy&lt;/a&gt;，这个是个动态反向代理生成器，只需要在 app 的 dockerfile 里面设定 VIRTUAL_HOST 这个环境变量就可以创建 nginx 的 vhost&lt;/li&gt;
&lt;li&gt;自动启动&lt;a href="https://hub.docker.com/r/andyshinn/dnsmasq/" rel="nofollow" target="_blank" title=""&gt;dnsmasq&lt;/a&gt;，这个是一个本地的 dnsmasq，结合 ansible 脚本里面对 mac 的 dns 的修改，他会把主机的'.dev'域名指向虚拟机 ip&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="样例"&gt;样例&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/vmlinz/rails-docker-dev" rel="nofollow" target="_blank" title=""&gt;rails-docker-dev&lt;/a&gt;，我在这个例子里面设置了一个简单的 rails app 和 postgresql，docker-compose.yml 里面只设定了 app 和 db server，然后我在.env 里面设置了 rails app 的域名为 VIRTUAL_HOST=app.local.dev，这样只要我运行&lt;code&gt;dev up&lt;/code&gt;之后就可以直接访问 app.local.dev，他会通过 nginx 反向代理到 rails app 里面。&lt;/p&gt;
&lt;h2 id="问题"&gt;问题&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;这个脚本基本没有啥问题，跨越 gfw 之后可以很顺利的安装&lt;/li&gt;
&lt;li&gt;有一个已知的问题是如果使用 brew 安装的 zsh，他可能不会正确的安装 zsh 的路径配置，我已经给他提了 pr&lt;/li&gt;
&lt;li&gt;这个项目作者维护的不很勤，release 之后还没有再改过，不过我从中还是学到了很多东西，特别是他用到的那个 nginx 的 docker image，很神奇&lt;/li&gt;
&lt;li&gt;类似的项目不少，但是这个的依赖好像特别多，也许可以用他的思路去改进其他项目。&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>vmlinz</author>
      <pubDate>Thu, 29 Oct 2015 00:08:26 +0800</pubDate>
      <link>https://ruby-china.org/topics/27881</link>
      <guid>https://ruby-china.org/topics/27881</guid>
    </item>
  </channel>
</rss>
