Docker Memo [CentOS7] (MongoDB,Redis,nginx,Node.js)


CentOS7 + Dockerで簡単にサーバーを立てる時のメモ
面倒なのでSELinuxはとりあえずPermissiveで。
データは全てホスト側に保存。(実行のみDockerを利用
[]は自分の環境に置換。 ()は省略可能。

インストール

# Docker Install
 yum install docker
 systemctl start docker
 systemctl enable docker

# SELinux Setting (Permissive)
 setenforce 0
 vi /etc/sysconfig/selinux
  SELINUX=permissive

# Firewall Settings (Add Port)
 firewall-cmd –permanent –add-port=80/tcp
 firewall-cmd –permanent –add-port=3000/tcp

サーバー実行

# MongoDB
 docker run -d -p 27017:27017 -v [MongoDB Dir]:/data/db dockerfile/mongodb

# Redis
 docker run -d -p 6379:6379 -v [Redis Dir]:/data dockerfile/redis

# Nginx
 docker run -d -p 80:80 -v [Nginx Dir]:/var/www/html dockerfile/nginx

サイトの追加、設定変更する場合 -v [Nginx Settings Dir]:/etc/nginx/sites-enabled で設定ファイルをマウントすればOK

# Node.js
 docker run -d -p 3000:3000 -v [Node.js Dir]:/usr/src/app -w /usr/src/app node:0.10 node app.js

# Node.js (npm install)
 docker run -it –rm -v [Node.js Dir]:/usr/src/app -w /usr/src/app node:0.10 npm install

どういうコンテナか確認する時はbash等で起動すると分かりやすいかと思います。
 docker run -it –rm [Container] bash

Docker Run

 docker run [Docker Run Options] ([Run Command])

[Docker Run Options]
 ・ボリュームをマウントする (–volume)
  -v [Host Volume]:[Container Volume](:ro)

 ・ポートを割り当てる (–publish)
  -p ([IP]:)[Host Port]:[Container Port]

 ・作業ディレクトリを設定する (–workdir)
  -w [Container Directory]

 ・コンテナに名前を付ける
  –name [Container Name]

[どちらか選択]
 ・常に実行 (–detach)
  -d

 ・単一コマンド実行&実行後コンテナ削除 (–interactive –tty –rm)
  -it –rm

その他

# Docker (→詳細)
 docker start [Container ID]
 docker restart [Container ID]
 docker stop [Container ID]
 docker rm [Container ID]
 docker inspect [Container ID]
 docker logs [Container ID]
 docker top [Container ID]
 docker cp [Container ID]:[Container File] [Host Dir]
 docker ps
 docker exec -it [Container ID] bash

# Systemctl
 systemctl start [Service]
 systemctl status [Service]
 systemctl stop [Service]
 systemctl enable [Service]
 systemctl disable [Service]
 systemctl list-unit-files

# Firewall
 firewall-cmd –permanent –add-port=[Port]/[tcp|udp]
 firewall-cmd –permanent –remove-port=[Port]/[tcp|udp]

JavaScript to TypeScript Type Definitions (d.ts) Auto Converter 0.1.0


お久しぶりです。最近TypeScriptで遊んでるすてねこです。

JavaScriptからTypeScriptの定義ファイルを手作業で頑張って作ってたのですが、とーってもめんどくさくなってきました(

で、自動で変換できないかって思いました。

次の日あたりに簡単なのを試作・・・なんだか、いけそう!

ちょこちょこ改良を重ね無駄な機能をつけていきました!

そろそろ作る気力がなくなってきたので、公開してモチベーションを高めようかとか思います。

まだまだテスト版でバグとかたくさんあるかと思いますが・・・
コメントとか頂けると喜んで改良・修正します!\(>ヮ<)/
ブログまたは、Twitter @suteneko1027 までお願いします~

このアプリケーションを使って何が起こってもすてねこは責任を取りません!
あとアプリケーションの改良して公開したりは取りあえずおやめください><
あ、もちろん、このアプリケーションを使って生成された定義ファイルはご自由に使用してください!

[ 単純な定義ファイルの作り方 ]

1.CodeにJSのクラスっぽいものを書きます
2.Codeの最後に作ったクラスの定義を書きます
(複数ある場合は配列にしてください)
3.Convertを押すとResultとOutput DirectoryにTypeScriptの定義ファイルが生成されます。

4011f89f09dc45bf62ff6eab6498ab4c

無駄機能: Optionsのtypeをtsdからtsに変更してConvertします。
すると関数の定義まで出してくれます。
(※JSから完全なTSができるわけではありません。)

3ba846c0853244067536354f981032ea[1]

[ Node.JSモジュールの定義ファイルの作り方 ]
1.実行ファイルと同じフォルダにnode_modulesフォルダを設置します。(npmとかでインストールまたはコピー)
2.Codeにモジュールのオブジェクトを生成します。
3.Convertを押すとResultとOutput DirectoryにTypeScriptの定義ファイルが生成されます。

2775fe4881271a284602a7a2b677d745

 

[ ダウンロード ]
Windows版 JS2TSD 0.1.0 : js2tsd-win-0.1.0
Mac版 JS2TSD 0.1.0 : js2tsd-mac-0.1.0.app
(Mac版はMac持ってないので、よくわからないけど一応公開します。動いたら報告頂きたいです!)

Linux版は要望あればアップしますー。

どうなってるか詳しくはあとで書きます。。。
オブジェクトからたどったり、関数を文字列化して解析したりしてます。
あとアノテーションも使ってごにょごにょしてます。

Node.js Tools For Visual Studio Can’t Debug?


今月の初めにNode.js Tools For Visual Studio 1.0 betaが公開されましたね。

TypeScriptにも対応しデバッグもできて素晴らしい!

のですが、、なぜか新しいプロジェクトからTypeScriptのNode.jsプロジェクトを作成してもデバッグできない・・・

そもそもDebugで起動すると”debugger listening on port 5858”とでるだけで、app.tsが一行も実行されない。。(※Releaseだと実行されます。)

デバッグできるプロジェクトと比較したところ・・・全てのファイルが完全に一致。でも起動させると、やはり片一方はデバッグできてもう一方はできない。

まさかと思い、デバッグできない方のapp.tsの文字コードを確認するとUTF8 BOM。

はっΣと思いUTF8(BOM無)に文字コードを変更。動いた!!

文字コードの変更は、app.tsを開き、ファイル保存オプションの詳細設定を開き、一番下のほうのUnicode(UTF-8 シグネチャなし – コードページ 65001)を選択してOKでできますー。

6a0bf56113ab15e47e4a137172a4e6c9

追記
app.jsが文字コードUTF8 BOM付になっているかと思います。一度app.jsを削除するか、app.jsの文字コードもBOM無に変更しましょう。

Node.js Tools For Visual Studio


忙しくて一カ月もブログを放置してました;; WPFでアプリ書いたりしてました。。

Node.jsVisualStudio上で開発するためのツールの最新版がビルド(2014-03-12)されてました。

Node.js Tools For Visual Studio
https://nodejstools.codeplex.com/releases/view/116275

VisualStudio上でNode.jsをデバッグできたり便利な機能が備わってます。
いつの間にか、npm のパッケージのインストールやアップデートもできるようになってました!

最近、Node.js+TypeScriptで開発してるのですが、tsファイルを追加してもコンパイルされてくれません(´;ω;`)
多分TypeScriptのプロジェクトとNode.jsのプロジェクトファイルをごにょごにょすればできるはずです!

が、それはとっても面倒だなって・・・思ってオプションを見てると、
簡単にできそうなオプションがありました!

[ツール] → [オプション]
[テキストエディタ] → [TypeScript] → [プロジェクト] → [全般]
プロジェクトの一部でないTypeScriptファイルを自動的にコンパイルする

なんだかこれを使えばいけそうです!

b53f8cb25084aca03a7787d735650215

設定してtsファイルを作って保存すると・・・
ちゃんとjsにコンパイルされました!

あ、コンパイルしてるだけなのでtsファイルでブレークポイント設定してもデバッグできないので悪しからず。デバッグはjsでやってくださいっ。

Node.js JSON Web Token


最近Node.jsJSON Web Tokenを使うときはnode-jsonwebtokenを使っています。

使い方が簡単で様々な暗号化アルゴリズム対応しています。

npmからインストール

npm install jsonwebtoken --save

使う前にインクルード

var jwt = require('jsonwebtoken');

暗号化

var data = { foo: 'bar' };
var token = jwt.sign(data, 'secret key!');

復号化

jwt.verify(token, 'secret key!', function(err, decoded) {
    console.log(decoded.foo) // bar
});

引数にオプションを渡すことでアルゴリズム変更できます。

jwt.sign(data, 'secret key!', { algorithm: 'ES256'});

詳しくは↓
https://github.com/auth0/node-jsonwebtoken

nvm


LinuxでNode.JSをいれるときnvmから入れると簡単に導入できて複数のバージョンも管理できて便利です。

nvmをgithubからダウンロードしシェルスクリプトを実行し、インストールします。
(現在のユーザの.nvm以下にインストールされます)

wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

インストールされたファイルのnvm.shを実行すればnvmが使えるようになります。

. ~/.nvm/nvm.sh

後はバージョン指定してNode.JSを使える状態にします。

nvm install 0.10
nvm use 0.10

Yuttari Node.js


今日は、のんびーり昨日作った画像から文字を認識するアプリWebからアクセスできるようにしました!

Node.jsでURL叩いたら画像を解析して文字を返してくれるだけの簡単なAPI。完成しましたー。

Node.jsVisualStudio2013Node.js Tools for Visual Studioいれて開発してます。まだまだバグだらけでよく落ちますが意外と便利です!

こちらからダウンロードできます↓
https://nodejstools.codeplex.com/