2015年6月29日更新:
在JVM上静态types化Ruby的InfraRuby编译器和运行时!
我希望有一个单一的二进制,静态链接,从一个简单的ruby爬行器build立一个苗条的docker集装箱。
就像Go生产的东西一样:
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
(从构buildGo应用程序的最小Docker容器 )。
有没有办法用ruby / rails做到这一点?
何必? 当你为你的ruby应用程序创建一个Docker容器时,你已经创建了一个便于分发的包。
我会建议查看红宝石和铁轨官方图片。 在容器构建过程中,他们将运行gem bundler来打包相关性。
简单的ruby脚本项目
├── Dockerfile ├── Gemfile ├── Gemfile.lock └── helloworld.rb
图像是正常建造的
docker build -t my-ruby-app .
并运行如下:
$ docker run --rm my-ruby-app __ __ ____ __ __ / / / /__ / / /___ _ ______ _____/ /___/ / / /_/ / _ \/ / / __ \ | | /| / / __ \/ ___/ / __ / / __ / __/ / / /_/ / | |/ |/ / /_/ / / / / /_/ / /_/ /_/\___/_/_/\____/ |__/|__/\____/_/ /_/\__,_/
FROM ruby:2.1-onbuild CMD ["ruby", "helloworld.rb"]
require "artii" a = Artii::Base.new :font => 'slant' puts a.asciify('Hello world')
source "https://rubygems.org" gem "artii"