本文是對(duì)下文的翻譯:
https://docs.openshift.com/container-platform/3.9/using_images/s2i_images/ruby.html
OpenShift提供了S2I enabled Ruby images去部署和執(zhí)行Ruby應(yīng)用衅谷。 這個(gè)Ruby S2I builder image收集你的application source及其所需要的依賴去創(chuàng)建一個(gè)新的image, 以容器化你的Ruby應(yīng)用诉稍。這個(gè)最終的image可以在openshift或者Docker上運(yùn)行蚯姆。
目前, Openshift提供的Ruby版本有2.0, 2.2和2.3歌殃,提供了兩種base image, RHEL7 Images和centos 7 Images
獲得兩個(gè)Images的方法是:
$ docker pull registry.access.redhat.com/rhscl/ruby-22-rhel7
$?docker pull openshift/ruby-22-centos7
你可以在import-image為openshift imagestream.
編譯的過(guò)程
S2I通過(guò)注入source code然后讓這個(gè)container準(zhǔn)備source code卻執(zhí)行而產(chǎn)出ready-to-run images。只要的步驟有以下幾步:
1. 從builder image中起一個(gè)container
2. 下載application source
3. streams 腳本和sources 到build image container
4. 運(yùn)行assemble script
5. 保存the final image
Ruby image提供了一些環(huán)境便令去讓我們控制這些Ruby runtime的行為
去配置這些環(huán)境變量,你可以將他們放置在?.sti/environment或者在BuildConfig的environment section定義条霜。
讓我們簡(jiǎn)單看一下有那些環(huán)境變量:
RACK_ENV: 這個(gè)變量定義了ruby application是production,?development, or?test。每種對(duì)應(yīng)不同的行為悔详,例如errors page, ruby gem installations, log levels等镊屎。默認(rèn)值為production.
RAILS_ENV: 大致同上。讓二者保持一致即可茄螃。默認(rèn)該值等于${RACK_ENV}
DISABLE_ASSET_COMPILATION: Assect compilcation只會(huì)發(fā)生在production環(huán)境缝驳。如果assets已經(jīng)被編譯,則可以使用該變量關(guān)掉該功能归苍。
PS: 變量不在此一一說(shuō)明用狱。
Hot Deploying
Hot deployment允許你可以很快的部署變化而不用重新生成一個(gè)S2I build.