はじめに
業務でログ監視システムの構築を行い、その際にログを出力するだけのシンプルなサーバーをDocker/Node.jsで作りました。
スタブ用途等ですぐに建てれる、サーバーの雛形としてお使い頂ければと思い、記事投稿に至りました。
前提
Docker
/ docker-compose
を用いているので、インストールをお願いします。
インストール手順は、他の方がいっぱい書いておりますのでそちらをご参考に。
リポジトリ
下記のリポジトリになります。
simple_server
使い方
docker-compose build
や docker-compose up
等々は、
当リポジトリでは シェルスクリプトでラップしています。
ビルド手順
下記のシェルを実行し、イメージのビルドを行います。
/bin/sh build.sh
上記のシェルを実行すると、イメージの構築が出来ます。
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
simple_server_simple-server latest 45163213fabc 4 hours ago 110MB
実行手順
下記のシェルを実行し、コンテナの起動を行います。
/bin/sh run.sh
下記でコンテナが起動できたことを確認できます。
ポートはhostの 30000
ポートを、 コンテナの 3000
ポートにバインドしています。
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb6bc7a1a37e simple_server_simple-server "docker-entrypoint.s…" 7 seconds ago Up 5 seconds 0.0.0.0:30000->3000/tcp simple_server_simple-server_1
アクセス確認
ここまででサーバーを立てることができたので、アクセスの確認を行います。
現状はログファイルにログを出力するだけの簡単な仕組みですが、お好きなように変更頂ければと。
ルートURL
% curl http://localhost:30000/
Hello World
infoログ
% curl http://localhost:30000/info
info logging
% tail -n 1 ~/workspace/simple_server/simple-server/log/app.log
{"message":"info logging","level":"info"}
warnログ
% curl http://localhost:30000/warn
warn logging
% tail -n 1 ~/workspace/simple_server/simple-server/log/app.log
{"message":"warn logging","level":"warn"}
errorログ
% curl http://localhost:30000/error
error logging
% tail -n 1 ~/workspace/simple_server/simple-server/log/app.log
{"message":"error logging","level":"error"}
備考
リポジトリ内の docker-compose.yml
をご覧頂いたら分かるかと思いますが、
下記のように app
ディレクトリ配下、 log
ディレクトリ配下に関してはマウントしており、
起動したままホスト環境側で変更可能です。
docker-compose.yml
volumes:-./simple-server/app:/app-./simple-server/log:/var/log-/app/node_modules
最後に
docker
やっぱりめちゃくちゃ便利ですね。
作って捨てることが出来るのは嬉しいです。
ご自身のgithub等々にストックとして追加しておくことで、実案件時に助かることが多いのではないでしょうか。
雛形としてお使い頂けたら幸いです!