2015年2月29日更新:
InfraRuby compiler and runtime for statically typed Ruby on the JVM!
我希望在一个简单的ruby爬虫中使用一个静态链接的单个二进制文件来构建一个纤薄的docker容器。
Go产生的东西:
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
(来自Building Minimal Docker Containers for Go Applications)。
有没有办法用ruby / rails做到这一点?
答案 0 :(得分:-2)
为什么要这么麻烦?为ruby应用程序创建docker容器时,您已经在创建一个方便的分发包。
我建议您查看ruby和rails官方图片。在容器构建过程中,他们将运行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"