LoginSignup
4

More than 1 year has passed since last update.

DockerとRefinery CMS

Last updated at Posted at 2016-08-11

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
  3. You can use dark theme
What you can do with signing up
4