これまでNitrous.IOをfreemiumでありがたく使わせていただきましたが、Introducing Nitrous ProにあるようにすでにNitrous.IO Proに移行しています。暫定的に旧環境もLiteとして使えていますが、2015-07-01には終了します。Nitours Proのアカウントも作成しましたがfreeアカウントだと1日2時間しか使えません。そろそろ移行先を考えないといけません。
Nitrous.IO
Nitrous.IOはWebIDEやCloudIDEと呼ばれるカテゴリーで、クラウド上に開発環境のコンテナととブラウザから使えるIDEがセットになったサービスです。alternativesには以下のサービスがあります。
主にNode.jsやGoの開発用に使っていますが、DjangoやRails、MEANやMeteorなどのテンプレートもそろっています。ブラウザがあればすぐに開発とプレビューがすぐに使えるようになります。Chromebookとネット接続環境さえあればどこでも開発ができるようになります。ホームレスからスーパースターまで。
2年くらい前にAfter Just Four Weeks, The Homeless Man Learning To Code Has Almost Finished His First Appをみて思い立ちChromebookとNitrous.IOを使い始めました。Nitrous.IO Stories - Yehuda Katz and Tilde.IOによると、あのYehuda Katz氏もTilde.IOで使っているそうです。
CloueIEDとIaaS
Cloud9にはパブリックサービスのc9.ioに加えてオープンソース版のc9/coreがあります。オープンソース版をDockerコンテナとしてCloud9を起動する予定なのでどのIaaSでも動作します。Cloud9はBeagleBone Blackでも採用されているようにそれほど大きなリソースも必要ありません。今回はミニマム構成だと月額500円で使えてコスパが良いIDCFクラウドで動かしてみます。
- Nitrous.IOのBASIC
- コンテナ: 2つまで
- メモリ: 1GB
- ストレージ: 10GB
- 料金: 14.99ドル/月
- c9.ioのMicro
- コンテナ: 2つまで
- メモリ: 1GB
- ストレージ: 10GB
- 料金: 9ドル/月
- IDCFクラウドのlight.S1
- コンテナ: ストレージとメモリの範囲内
- メモリ: 1GB
- ストレージ: 15GB
- 料金: 500円/月
プロジェクト
適当なディレクトリにプロジェクトを作成します。workspaceはCloud9のコンテナにマップするボリュームです。リポジトリはこちらです。
$ cd ~/node_apps/docker-cloud9 |
Docker Hub RegistryにいくつかCloud9のイメージがあります。
今回はDocker Composeを使ってミニマルにつくりたいので自分でビルドすることにします。
UPDATE: 2017-03-24 Dockerfileとdocker-compose.ymlを修正
FROM node:7 |
以下のようなdocker-compose.ymlを用意します。portやcommandはこれからも変更していくのでリビルドに時間がかかるDockerイメージには入れませんでした。
version: '2' |
Cloud9は80ポートで起動します。Dockerホストで80は他のサービスですでに使っているので8080にマップします。15454ポートはデバッグ用に使うポートです。5000ポートはテスト用のExpressアプリで使います。
Cloud9
Docker Composeからサービスをupします。初回の起動時にイメージをビルドするので10分くらいがかかります。
$ docker-compose up |
Dockerホストには8080でマップしているので、ブラウザからDockerホストのIPアドレスを指定して開きます。
http://xxx.xxx.xxx.xxx:8080/ide.html
Expressアプリの作成
workspace
の下に新しいディレクトリを作成します。ミニマルなExpressのapp.jsを作成します。
; |
Expressをインストールしてapp.jsを実行するpackage.jsonを作成します。
{ |
IDE上では以下のようになります。
実行
画面下のコンソールから作成したspike
ディレクトリに移動してnpmパッケージをインストールします。
root@744ec8fcf715:/workspace# cd spike/ |
app.jsを選択した状態で、メニューからRun > Run With > Node.js
を選択してアプリを起動します。新しいコンソールタブでデバッグ用の15454ポートと、Expressの5000ポートが開きます。
Debugger listening on port 15454 |
ExpressアプリでHello worldが表示されました。とりあえず動いているようです。