LoginSignup
4

More than 1 year has passed since last update.

posted at

updated at

DockerとRefinery CMS

Refinery CMSが動作するDockerイメージの作成

Ruby on Railsで実装されたRefineryCMSをDockerを用いて動作させたい.ローカルの仮想環境で開発を行い,VPSで運用するイメージだ.Refinery CMSは Ruby on Rails CMS thatsupports Rails 4.2 - Refinery CMS で紹介されている.

仮想環境でRefinery CMSを動かすための準備

仮想環境にはrubyと関連のライブラリ等をインストールする.rubyはrbenvでインストールした.バージョンは現時点での最新版である2.3.1を使用した.

Refineryを試しに動作させるにはDownload & install Refinery Rubygem - Refinery CMS を見ると良い.

仮想環境にインストールしたのはSQLiteとImageMagic,nodejsだ.前述のサイトではexecjsをインストールしているが,nodejsでないと動かないようだ.

sudo apt-get install sqlite3 libsqlite3-dev
sudo apt-get install imagemagick
sudo apt-get install nodejs

Refineryを作成するには次のようにする.

rails new my_refinery -m http://refinerycms.com/t/3-0-

後の開発作業のため,gitのリポジトリにする(.gitignoreは最初からある).

git init
git add .
git commit -m 'Initial commit'

Dockerで動かす

このプロジェクトにRefineryを動かすためのDockerfileを作る.雛形として公開されているイメージruby:2.3.1を用いる.作成したDockerfileは次のとおりだ1 , 2 , 3 , 4

FROM ruby:2.3.1

# Environments
ENV APP_ROOT /app_root

# Install apt packages
RUN apt-get update -qq && \
    apt-get install -y nodejs --no-install-recommends && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# Set up bundler
RUN echo 'gem: --no-document' > /etc/gemrc
RUN bundle config --global build.nokogiri --use-system-libraries
RUN bundle config --global jobs 4

# Use cache for bundle install
WORKDIR $APP_ROOT
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install

# Add App to WORKDIR
ADD . $APP_ROOT

# Run Server
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

最終行でrailsserverを起動するための設定.デタッチモードで実行できるようになっている.

docker run -d -p 3000:3000 ychubachi/my_refine

ログを確認する方法(コンテナ名はdocker psで確認可能).

docker logs -f $CONTAINER

停止するには次のようにする.

docker stop $CONTAINER

Docker hubへの登録

下記のコマンドでDocker Hubに登録する

docker push ychubachi/my_refinery

ychubachi/my_refineryで確認できる.

VPSでの実行

VPSにSSH接続を行い,次のようにして,DockerHubからイメージを入手し,実行する.

docker pull ychubachi/my_refinery
docker run -d -p 3000:3000 ychubachi/my_refinery

参考文献

Footnotes

1 sqlite3やImageMagicなどはすでにインストール済みなので明示的にインストールする必要はないようだ.

2 apt-getの書き方についてはDockerfileのベストプラクティス — Docker-docs-ja 1.9.0bドキュメントを参考にした.

3 bundleinstallのキャシュを用いた高速化については最速Docker研究会(DockerのTipsを20個上げていくぜ編) -Happy New Worldを参考にした.

4 このDockerfileを作成した手順は効率的に安全なDockerfile を作るには - Qiitaに近い.


  • source /mnt/c/Users/yc/Dropbox/org/qiita/acae9712a57857e4dc79.org

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4