/var/log/messages

Jul 27, 2014 - 2 minute read - Comments - programming

docker_rails_dev_env 確認

とりあえず d というスクリプトから確認を。

基本的には

  • vagrant ssh で接続して
  • docker/scripts 配下のスクリプトを実行

という形になってます。つうか restore-db.sh とか見るに再起動は rm しなくて良いのか。つうかこれ、dockersudo docker.io に置換すれば今の環境で使えますね、

使途を以下に控えておきます。

  • rdbm.sh は rake db:migrate 用
  • cmd.sh は任意のコマンド (rake assets:precompile とか) 用
  • restore-db.sh は setup_database.sh を実行 (コンテナを止めて再起動している)
  • rc.sh は rails c 用
  • rebuild.sh はコンテナを削除して build して再起動
  • restart.sh はコンテナを削除して再起動

む、rebuild.sh と restart.sh の差を理解できてないぞ。あとコマンド手で入力したところによれば docker stop rails は効かない模様。

Dockerfile 見てみます

redis は以下のみ、です。

FROM johncosta/redis

ただ、container 起動時にポートなどの情報を付与してあげる必要があります。

$ sudo docker.io run -d --name redis -p 6379 redis:latest

次は postgres ですが、こちらは以下。

FROM stackbrew/ubuntu:12.04
MAINTAINER Ben Firshman "ben@orchardup.com"

RUN locale-gen en_US.UTF-8
RUN apt-get -qq update && LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive apt-get install -y -q postgresql-9.1 postgresql-contrib-9.1 postgresql-9.1-postgis libpq-dev sudo

# /etc/ssl/private can't be accessed from within container for some reason
# (@andrewgodwin says it's something AUFS related)
RUN mkdir /etc/ssl/private-copy; mv /etc/ssl/private/* /etc/ssl/private-copy/; rm -r /etc/ssl/private; mv /etc/ssl/private-copy /etc/ssl/private; chmod -R 0700 /etc/ssl/private; chown -R postgres /etc/ssl/private

ADD postgresql.conf /etc/postgresql/9.1/main/postgresql.conf
ADD pg_hba.conf /etc/postgresql/9.1/main/pg_hba.conf
ADD run /usr/local/bin/run
RUN chmod +x /usr/local/bin/run

VOLUME ["/var/lib/postgresql"]
EXPOSE 5432
CMD ["/usr/local/bin/run"]

そういえば DB は -v 使ってデータ領域共有した方が良いのかどうか。postgresql.conf によればデータの格納領域は以下なのかどうか。

data_directory = '/var/lib/postgresql/9.1/main'

もひとつ、某所に deploy した版な rails 向け Dockerfile が以下。

FROM ubuntu:12.04
MAINTAINER talkingquickly.co.uk <ben@talkingquickly.co.uk>

ENV DEBIAN_FRONTEND noninteractive

# REPOS
RUN apt-get -y update
RUN apt-get install -y -q python-software-properties
RUN add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
RUN add-apt-repository -y ppa:chris-lea/node.js
RUN apt-get -y update

# INSTALL
RUN apt-get install -y -q build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-config libmysqlclient-dev libpq-dev make wget unzip git vim nano nodejs mysql-client mysql-server gawk libgdbm-dev libffi-dev

RUN git clone https://github.com/sstephenson/ruby-build.git /tmp/ruby-build && \
    cd /tmp/ruby-build && \
    ./install.sh && \
    cd / && \
    rm -rf /tmp/ruby-build

# Install ruby
RUN ruby-build -v 2.0.0-p481 /usr/local
 
# Install base gems
RUN gem install bundler rubygems-bundler --no-rdoc --no-ri

# Regenerate binstubs
RUN gem regenerate_binstubs

RUN apt-get install -y -q postgresql-client

# Rails app
ADD docker/rails/start-server.sh /start-server.sh
RUN chmod +x /start-server.sh
# RUN mkdir /app

# Preinstall majority of gems
WORKDIR /tmp 
ADD ./Gemfile Gemfile
ADD ./Gemfile.lock Gemfile.lock
RUN bundle install 

RUN mkdir /app
# ADD . /app

ENV RAILS_ENV production

ADD ./docker/rails/setup_database.sh /setup_database.sh
RUN chmod +x /setup_database.sh

EXPOSE 3000

CMD ["/start-server.sh"]

setup_database.sh ってどこで実行してるんだろ。

とりあえず

ぺちぴーな開発環境向けなソレを、という話があったりするのですが、そのあたりは次回の #okidevops あたりになるのかどうか。