最近几天一直在折腾docker的下部署多个Ruby探针的问题,走了些弯路,目前有了点小成果,记录如下,以供后来采坑之人的可以绕行:
运行系统环境为Mac OSX Yosemite版本10.10.4。
从docker的官方文档中看了一下mac下的安装步骤和无脑学习课程:
下载的安装包为:DockerToolbox-1.8.2a.pkg
安装后会出现2个应用:Docker Quickstart(终端操作) TerminalKitematic (Beta)(图形界面操作)[对于程序员果断无视第2个应用,以后再研究]
要再mac下运行docker,需要先运行Docker Quickstart.会出现下图:
1.新建立一个目录my_rails
2.在my_rails目录下创建Dockerfile,内容如下:
FROM ruby:2.2
RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y mysql-client postgresql-client sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN gem source -r https://rubygems.org/
RUN gem source -a https://ruby.taobao.org
RUN gem install rails -v 4.2.4
RUN mkdir /myapp
WORKDIR /myapp
RUN rails new . --force --skip-bundle
ADD Gemfile /myapp/
RUN bundle install
ADD oneapm.yml /myapp/config/
3.在my_rails目录下,创建Gemfile,将我们要安装的gem提前写好,内容就不贴了,自己生成一份看一下就知道,需要注意2个事情:
(1)最好改一个source,默认的https://rubygems.org总是报ssl联网超时,改成淘宝的源 https://ruby.taobao.org就没有这个问题,对于住在长城脚下的人你懂得;
(2)本文主题是安装Ruby探针,故需要 gem ‘oneapm_rpm’放到Gemfile :)
4.创建oneapm.yml,并配置选项。
5. 在my_rails目录运行 docker build -t my_rails .
会看到docker正在帮我们创建镜像文件,build成功后,用docker images看一下 就可以看到my_rails镜像已存在了
6. 接下来我们就可以运行docker,开启我们的容器之旅了。
docker run -d -p 3000:3000 my_rails rails s -p 3000 -b ‘0.0.0.0'
docker run -d -p 3001:3001 my_rails rails s -p 3001 -b ‘0.0.0.0'
上面开启了2个container,在mac下需要注意2个事情[咋又是2个]:
(1) 要想从mac中访问需要使用docker machine所在的ip才能访问(使用docker-machine ip default命令查看) 至于原因可以看这个。
(2) 启动rails时需要指定bind参数 “-b ‘0.0.0.0’”,确保容器外可以使用ip+port可以访问到。
7. 在浏览器中查看运行情况:
表明容器启动成功,看一下探针情况:
显示为2个探针实例,再查看一下探针的详情
数据已抓回,验证成功。
总结:
在mac下运行docker流程还是比较简单了,感觉docker还是挺有意思,以后可以用docker运行rails不同版本的环境,用来测试一下探针兼容性。