ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker onbuild 이미지 이용하기 : ruby
    Container 2016. 3. 28. 09:00
    반응형
    루비 시나트라
    ruby 인기있는 프레임워크중 하나인 sinatra docker 이용해서 실행해보자.
    우선 Sinatra 프레임워크를 사용하기위한 Gemfile Gemfile.lock파일을 아래와 같이 만들자.
    Gemfile
    gem 'sinatra'

     
    Gemfile.lock
    GEM
      specs:
        rack (1.6.4)
        rack-protection (1.5.3)
          rack
        sinatra (1.4.6)
          rack (~> 1.4)
          rack-protection (~> 1.4)
          tilt (>= 1.3, < 3)
        tilt (2.0.1)
     
    PLATFORMS
      ruby
     
    DEPENDENCIES
      sinatra
     
    BUNDLED WITH
       1.10.6


    그리고 실제 간단한 Sinatra 프로그램을 준비해보자.
    app.rb
    require 'sinatra'
     
    set :bind, '0.0.0.0'
     
    get '/' do
      'Hello world!'
    end

     이제 프로그램을 실행하기위한 Dockerfile 만들자.
    FROM ruby:2.1-onbuild
     
    EXPOSE 4567
    CMD ["ruby", "app.rb"]

    Dockerfile 내용을 살펴보면 간단하게 ruby 2.1-onbuild 태그를 이용하는걸 있다.
    그리고 CMD에서 ruby app.rb명령을 실행해서 앱을 실행하는걸 확인할 있다.
    이제 Dockerfile 이용해서 이미지를 만들어서 실행해 보자.
    docker build --tag ruby-sinatra .
    docker run --rm -ti -p 4567:4567 ruby-sinatra
    이러면 sinatra 프로그램이 docker 컨테이너로 실행된걸 확인할 있다.
    Curl 127.0.0.1:4567 하면 “Hello world!” 출력되는걸 확인할 있다.
     
     
    루비 레일즈
    루비에서 가장 유명한 레일즈역시 docker 이용해서 실행할 있다.
    기본 Rails 프로그램을 만들기 위해서 아래처럼 rails 설치한다.
    gem install rails
     
    정상적으로 설치가 되었다면 rails 명령어를 이용해서 ruby-rails라는 기본 rails 프로그램을 생성한다.
    rails new ruby-rails
     
    생성된 ruby-rails 디렉토리 안에다가 다시 ruby Dockerfile 만든다.
    FROM ruby:2.1-onbuild
     
    RUN apt-get update && apt-get install -y nodejs
    CMD ["rails", "server", "-b0.0.0.0"]
     
    앞서 살펴본 Sinatra 프로그램과 비슷한데, 차이점은 RUN 명령어를 통해서 nodejs 패키지를 설치해 줬다는 것이다. 기본 ruby docker 이미지에는 자바스크립트를 실행하기위한 런타임이 설치되어 있지 않는데, rails 프로그램을 실행하려면 시스템에 자바스크립트 패키지가 필요하다. 그래서 직접 nodejs 설치해 것이다.
    이제 실행해보자.
    docker build --tag ruby-rails .
    docker run --rm -ti -p 3000:3000 ruby-rails
     
    웹페이지에서 3000 포트로 접근하면 기본 rails 페이지가 보이게 된다.

     
     
    반응형

    'Container' 카테고리의 다른 글

    Docker onbuild 이미지 이용하기 : Node.js  (0) 2016.04.01
    Docker onbuild 이미지 이용하기 : php  (0) 2016.03.30
    Docker onbuild 이미지 이용하기 : python  (0) 2016.03.25
    Docker 구조  (0) 2016.03.23
    DockerHub 사용하기  (1) 2016.03.21

    댓글

Designed by Tistory.