mongodbのデータベースとユーザーを初期設定をdocker-composeでやってみた

mongodbのデータベースとユーザーを初期設定をdocker-composeでやってみました

使うイメージ
image: mongo

試行錯誤の結果、
docker-compose.ymlはこんな感じ

version: '2'
services:
  mongo:
    container_name: mongo
    image: mongo
    ports:
    - "27017:27017"
    volumes:
    - ./mongo/data:/data/db
    - ./mongo/init/:/docker-entrypoint-initdb.d/
    environment:
    - MONGO_INITDB_DATABASE=fluentd

MONGO_INITDB_DATABASEは、使うデータベース名を指定します
(mongoコンテナ内の /docker-entry.point に処理が書いてあります)

./mongo/data にmongodbのデータを永続化させます

./mongo/init/init.js に初期化のスクリプトをこんな感じで

var newUsers = [
  {
        user: 'logger',
        pwd: 'password',
        roles: [
            {
                role: 'readWrite',
                db: 'fluentd'
            }
        ]
    }
];

var currentUsers = db.getUsers();
if (currentUsers.length === newUsers.length) {
    quit();
}
db.dropAllUsers();

for (var i = 0, length = newUsers.length; i < length; ++i) {
    db.createUser(newUsers[i]);
}

参考: fluentd + MongoDB でログサーバー構築 - Qiita

これで、
$ docker-compose up -d
で起動

fluentdデータベースにloggerユーザーが書き込めるようになりました
docker runでもパラメータ渡してやれば出来ますが面倒なので、composeを使いました

fluentdの裏に置くための準備でやってみました

Ubuntu 14.04で「Error opening terminal: xterm-256color」エラーが発生した

Ubuntu 14.04でNeovimをいれたところ、colorschemeを設定しても反映されなかったので
どこかで見た情報で、TERMの設定がいるということで

export TERM=xterm-color256

を.bashrcなんぞに書いてNeovimは解決
と思ってました

ところが、

$ tig
すると Error opening terminal: xterm-256color とエラーが..
$ git diff
でも同じエラーがでました

ubuntu - Error opening terminal: xterm-256color - Stack Overflow
を参考に

export TERM=xterm-color

にすると直りました

docker buildするとimageがnoneになる

phpのimageにNew relicを入れたのdocker imageをつくろうと

$ vim Dockerfile

FROM php:5-apache
RUN a2enmod rewrite
RUN apt-get update \ 
  && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libjpeg-dev libmcrypt-dev wget \
  && docker-php-ext-install pdo_mysql mysqli mbstring iconv mcrypt zip \ 
  && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
  && docker-php-ext-install -j$(nproc) gd \ 
  && wget -O - https://download.newrelic.com/548C16BF.gpg | apt-key add - && \ 
    echo "deb http://apt.newrelic.com/debian/ newrelic non-free" > /etc/apt/sources.list.d/newrelic.list \
&&   apt-get -yq install newrelic-php5

$ docker build -t test .
とすると

$ docker images

REPOSITORY                     TAG                   IMAGE ID            CREATED             SIZE
<none>                         <none>                e1e4ef76e658        1 hour ago        440.3 MB

と、REPOSITORY、TAGがに..
しかたなく

$ docker tag e1e4ef76e658 test

とかして、使ってみましたが、Newrelicが入ってない..
Dockerfileをよくみると、リポジトリ追加後に、apt-get updateを忘れていました
追加して

$ vim Dockerfile

FROM php:5-apache
RUN a2enmod rewrite
RUN apt-get update \ 
  && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libjpeg-dev libmcrypt-dev wget \
  && docker-php-ext-install pdo_mysql mysqli mbstring iconv mcrypt zip \ 
  && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
  && docker-php-ext-install -j$(nproc) gd \ 
  && wget -O - https://download.newrelic.com/548C16BF.gpg | apt-key add - && \ 
    echo "deb http://apt.newrelic.com/debian/ newrelic non-free" > /etc/apt/sources.list.d/newrelic.list

RUN apt-get update && \ 
    apt-get -yq install newrelic-php5

再ビルド
$ docker build -t test .

これで、ちゃんと名前がつくようになりました

Nginxでstat() failed (13: Permission denied)エラー

Centos7 + Nnginx 1.10.3 でerror.logを見てみると

2017/02/17 10:51:27 [crit] 17910#17910: *1 stat() "/home/user/sample/html/" failed (13: Permission denied), client: xxx.xxx.xxx.xxx, server: sample.com, request: "GET / HTTP/1.1", host: "sample.com", referrer: "https://sample.com"

といったエラーがたくさん..
ディレクトリのパーミッションを見てみても

$ ls -al /home/user/sample/html/

drwxrwxr-x 7 user nginx 4096  2月 16 12:10 .

な感じで問題なさそう

いろいろ調べるとNginxの公開ディレクトリを、ユーザーのホームディレクトリ内に作ってて

$ ls -al /home/user

drwx------ 1 user user 4096  2月 16 12:10 .

と、途中の実行権限がないのが原因らしい

$ chmod 701 /home/user

で実行権限を付与
解決しました

参考) nginx 403 forbidden error when server static file under user home directory