基本的Rails應用程序
現在讓我們啟動一個基本的Rails應用。為了更好的展示,我使用Ruby 2.2.0和Rails 4.1.1
在終端運行:
$ rvm use 2.2.0 $ rails new && cd docker-test
創建一個基本的控制器:
$ rails g controller welcome index
……,然后編輯 routes.rb ,以便讓該項目的根指向我們新創建的welcome#index方法:
root 'welcome#index'
在終端運行 rails s ,然后打開瀏覽器,登錄http://localhost:3000,你會進入到索引界面當中。我們不準備給應用加上多么神奇的東西,這只是一個基礎的實例,當我們將要創建并部署容器的時候,用它來驗證一切是否運行正常。
安裝webserver
我們打算使用Unicorn當做我們的webserver。在Gemfile中添加 gem 'unicorn'和 gem 'foreman'然后將它bundle起來(運行 bundle install命令)。
啟動Rails應用時,需要先配置好Unicorn,所以我們將一個unicorn.rb文件放在config目錄下。這里有一個Unicorn配置文件的例子,你可以直接復制粘貼Gist的內容。
接下來,在項目的根目錄下添加一個Procfile,以便可以使用foreman啟動應用,內容為下:
代碼如下:web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
現在運行foreman start命令啟動應用,一切都將正常運行,并且你將能夠在http://localhost:5000上看到一個正在運行的應用。
構建一個Docker鏡像
現在我們構建一個鏡像來運行我們的應用。在這個Rails項目的根目錄下,創建一個名為Dockerfile的文件,然后粘貼進以下內容:
代碼如下: # 基于鏡像 ruby 2.2.0
FROM ruby:2.2.0
# 安裝所需的庫和依賴
RUN apt-get update && apt-get install -qy nodejs postgresql-client sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/*
# 設置 Rails 版本
ENV RAILS_VERSION 4.1.1
# 安裝 Rails
RUN gem install rails --version "$RAILS_VERSION"
# 創建代碼所運行的目錄
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# 使 webserver 可以在容器外面訪問
EXPOSE 3000
# 設置環境變量
ENV PORT=3000
# 啟動 web 應用
CMD ["foreman","start"]
# 安裝所需的 gems
ADD Gemfile /usr/src/app/Gemfile
ADD Gemfile.lock /usr/src/app/Gemfile.lock
RUN bundle install --without development test
# 將 rails 項目(和 Dockerfile 同一個目錄)添加到項目目錄
新聞熱點
疑難解答