/var/log/messages

debugging with sixth sense

Rails4 開発環境作ってみます

とりあえず目指す構成としては

  • Ubuntu な仮想ホストに Docker および nfsd を導入
  • Rails, PostgreSQL, Redis なコンテナ
  • アプリのディレクトリは nfs で共有
  • Rails コマンド叩きたい

あと、仮想ホストの環境設定などは ansible を使って云々な形にしたいです。どうなるか。

とりあえず

Docker および nfsd を使えるようにしとかねば。

$ sudo apt-get install -y nfs-kernel-server

あと

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

な不具合も何とかしたい。ちなみに docker は 0.9.1 な模様。

$ apt-cache show docker.io
Package: docker.io
Priority: optional
Section: universe/admin
Installed-Size: 21726
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Paul Tagliamonte <paultag@debian.org>
Architecture: amd64
Version: 0.9.1~dfsg1-2

入れておく。

$ sudo apt-get install -y docker.io

で、locale のエラーの件ですが、Ubuntu Server 12.04: 警告「Setting locale failed」への対処法 によれば接続元側の /etc/ssh/ssh_config の

SendEnv LANG LC_*

というエントリが原因なようです。コメントアウトしとこ。

とりあえず

某所で云々しているプロジェクトを clone して手動で docker なソレを kickoff してみます。つうか docker.io だし sudo しなきゃ、なのね。

$ sudo docker.io build -t postgres ./docker/postgres
$ sudo docker.io build -t rails .
$ sudo docker.io build -t redis ./docker/redis

rails なコンテナは kickoff に時間かかってます。ruby-build を云々してらっしゃる模様。導入終了時点で以下なカンジ。

$ sudo docker.io images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              f0cb029e411e        7 minutes ago       278 MB
rails               latest              d07448517757        12 minutes ago      937.9 MB
postgres            latest              60fc94deeea8        36 minutes ago      416.2 MB
stackbrew/ubuntu    12.04               ea7d6801c538        3 weeks ago         127.5 MB
ubuntu              12.04               ea7d6801c538        3 weeks ago         127.5 MB

で、postgres と redis は動かしておきます。

$ sudo docker.io run -d --name postgres -e POSTGRESQL_USER=docker -e POSTGRESQL_PASS=docker postgres:latest
$ sudo docker.io run -d --name redis redis:latest

あら、redis の方の動作が微妙。ps したら postgres しか動いていない。これ、原因を云々するにはどうすりゃ良いのやら。

と、言いつつ contrainer に接続してみるに、文字化け。

$ sudo docker.io run -i -t 7d03a32d31ed /bin/bash

*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 1
 ÀÁM<¸ FX¨!@@@ ¨À"$ Y" ◆◆¢BP⎼ö±?B     J։]B@┐÷?X¡©¥¢F´d­\­°õ6Ź@YZ┴≤d5>
¶SýN҆O▮Wº½ ⎽┤¯¸û³▒G'[[Zb⎻RDӪ˒8┤G<u$P0XsC^ü囫mB¥-&FX»y                       ←*I)Y┐¢F┐

むむ。これ確か sudo docker.io log とかってした時も同様に化けたな。contrainer だけ作って、/bin/bash で接続してみるか。

$ sudo docker.io run -i -t redis /bin/bash

これも化けた。てことは Dockerfile が悪いのかな。手動で云々してみるのかどうか。手元には ubuntu:12.04 な image はあります。

$ sudo docker.io run -i -t ea7d6801c538 /bin/bash
root@6cc7c8189a63:/# 

ええと、パケジだけ入れて、って redis な public image があるのかな。

$ sudo docker.io run johncosta/redis

あ、以下なのかな。

$ sudo docker.io run -d --name redis johncosta/redis -p 6379

なんか根本的な問題解決になっていないのですがとりあえず Dockerfile を以下にして

FROM johncosta/redis

以下を実行。

$ sudo docker.io build -t redis ./docker/redis
Uploading context 3.584 kB
Uploading context 
Step 0 : FROM johncosta/redis
 ---> 13aaf9ab41e5
Successfully built 13aaf9ab41e5

で、

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

で動いたのかな? で、postgres な container も rm して再度起動して

$ sudo docker.io run -d --name postgres -e POSTGRESQL_USER=docker -e POSTGRESQL_PASS=docker postgres:latest

二つ動いてる状態になりました。

$ sudo docker.io ps
CONTAINER ID        IMAGE                    COMMAND                CREATED             STATUS              PORTS                     NAMES
c49233f54278        postgres:latest          /usr/local/bin/run     6 seconds ago       Up 5 seconds        5432/tcp                  postgres            
ed4809b7d731        johncosta/redis:latest   /usr/bin/redis-serve   2 minutes ago       Up 2 minutes        0.0.0.0:49153->6379/tcp   redis               

いいのかな。なんか微妙なカンジが。

nfs で export して Docker 側で -v で mount できるのかどうか。なんかドキュメント見てるに nfs export しなくても良さげなんですがどうなんだこれ。

Comments