2016年4月29日星期五

试用docker版Huginn遇到Gem::RemoteFetcher::FetchError: SSL_connect...An error occurred while installing mysql2 (0.3.20...

由于我刚开始学习docker,而且不会ruby,下边用语不一定准确。

我试用了docker版的Huginn,而且是用的windows版docker toolbox运行的,按照官方文档执行
4. Start your Huginn container using docker run -it -p 3000:3000 cantino/huginn
后来经过我研究,实际上它启动时会默认执行/scripts/init
遇到了这个错误:
Gem::RemoteFetcher::FetchError: SSL_connect...
An error occurred while installing mysql2 (0.3.20...
似乎是在安装mysql2的gem这步挂了。原因是因为在大天朝局域网连不到那个服务器。

我首先尝试给docker的容器或者docker machine从环境变量设置proxy,但是没有效果。
后尝试如下方法成功:

  1.  docker run -it -p 3000:3000 cantino/huginn /bin/bash
    这一命令效果是:不是默认执行默认的/scripts/init,而是启动一个shell
  2.  export http_proxy=192.168.99.1:1080
  3.  export https_proxy=192.168.99.1:1080
    这一命令的效果是在启动的容器里用环境变量设置代理,代理的地址指向的是宿主机windows的shadowsocks,在容器中运行route和ifconfig是看不到这个地址的。但是可以进入docker machine里(执行docker-machine ssh default进入)看到我宿主机的地址是192.168.99.1。这也使我了解了windows下用docker toolbox的三层从下到上的关系大概是是windows——docker machine——docker容器
  4. 在/app下执行bundle
    这步安装依赖,实际上在init里就是执行这个的时候挂了。
  5. 执行/scripts/init
    这两步实际上应该有更巧妙的办法,比如把环境变量写到init里什么的,然而init我看不懂,还是不乱动了。

没有评论:

发表评论