はじめに
先日 Meteor が GitHub リポジトリスター数 Web application frameworks カテゴリで1位になりました
ちなみに2位は Ruby on Rails、3位は Express となっております。
GitHub 全体のリポジトリスター数でも9位となり、Meteor は世界で注目されているプロジェクトとなっております。
そんな今話題の Meteor のアプリケーションを OS X 上の Docker で動かす方法を解説します。
検証環境
検証環境は以下の通りです。
- OS X Yosemite 10.10.5
- Docker Toolbox 1.8.1b
- Docker Client 1.8.1
- Docker Machine 0.4.1
- Oracle VM VirtualBox 5.0.2
- Meteor 1.1.0.3
なお、この記事は Docker および Meteor の導入方法については解説いたしません。Docker と Meteor のセットアップがまだな方は、以下のリンクをご参照の上、セットアップを行ってからこの記事をお読みください。
Meteor アプリケーションを Docker 上で動かす手順
meteorhacks/meteordを用いて、Meteor を Docker 上で動かしてみます。
1. Meteor プロジェクトの作成
meteor create meteor-example
2. Dockerfile 作成
Dockerfile を Meteor プロジェクトディレクトリのルートに作成します。
# Meteor プロジェクトディレクトリに移動
cd meteor-example
# Dockerfile 作成
echo "FROM meteorhacks/meteord:onbuild" > Dockerfile
できあがった Dockerfile はこちら。
FROM meteorhacks/meteord:onbuild
3. Docker イメージのビルド
docker build -t yourname/app .
yourname/app は Meteor アプリの Docker イメージ名になります。お好きな名前に変更してください。
例:
docker build -t n-oshiro/meteord-example-app .
Sending build context to Docker daemon 14.34 kB
Step 0 : FROM meteorhacks/meteord:onbuild
# Executing 2 build triggers
Trigger 0, COPY ./ /app
Step 0 : COPY ./ /app
Trigger 1, RUN bash $METEORD_DIR/on_build.sh
Step 0 : RUN bash $METEORD_DIR/on_build.sh
---> Running in fdc0350bcf8a
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6121 0 6121 0 0 2672 0 --:--:-- 0:00:02 --:--:-- 5747
Downloading Meteor distribution
######################################################################## 100.0%
Meteor 1.1.0.3 has been installed in your home directory (~/.meteor).
Writing a launcher script to /usr/local/bin/meteor for your convenience.
To get started fast:
$ meteor create ~/my_cool_app
$ cd ~/my_cool_app
$ meteor
... (省略) ...
Removing intermediate container fd0f093a6f23
Removing intermediate container fdc0350bcf8a
Successfully built fb122de5bcc1
ビルドが終わったら、イメージの一覧を確認します。
docker images |grep meteord
n-oshiro/meteord-example-app latest fb122de5bcc1 3 minutes ago 313.9 MB
meteorhacks/meteord onbuild d0263be6aff1 3 months ago 302.1 MB
Dockerfile で指定した meteorhacks/meteord
というイメージと、 先ほど作成したイメージが追加されていますね。
4. Meteor アプリケーションを Docker で起動
以下のコマンドで Meteor アプリを Docker で起動します。
docker run -d \
-e ROOT_URL=http://yourapp.com \
-e MONGO_URL=mongodb://url \
-e MONGO_OPLOG_URL=mongodb://oplog_url \
-p 8080:80 \
yourname/app
なお、OS X の Docker は、VirtualBox の boot2docker 仮想マシン上で動いています。OS X 上で 上記コマンドを試す時は、ROOT_URL には boot2docker のIPアドレス(もしくはホスト名)とポートを指定する必要があります。
boot2docker の IP アドレスは $DOCKER_HOST を参照してください。
例:
echo $DOCKER_HOST
tcp://192.168.99.100:2376
docker run -d -e ROOT_URL=http://192.168.99.100:8080 -p 8080:80 n-oshiro/meteord-example-app
これで Meteor アプリが Docker 上で動きます。
docker ps
コマンドでプロセスを確認してみます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd0db059012f n-oshiro/meteord-example-app "/bin/sh -c 'bash $ME" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp kickass_cray
Meteor アプリが起動しているのが確認できますね。
5. ブラウザで Meteor アプリケーションの動作確認
前のステップで docker run で起動する時に ROOT_URL に指定したURLにブラウザでアクセスします。
動いた!
おわりに
この記事では OS X の Docker 上で Meteor アプリを動かす方法を解説しました。
meteorhacks/meteodを使うと簡単に Meteor アプリを Docker イメージにすることができます。
検証はしていませんが、OS X でなくても Meteor と Docker が動く環境ならこの手順で Docker イメージを作成することができると思います。
Meteor も Docker も日本語の情報が少ないので、この記事がこれから試される方の手助けになれば幸いです。
よい Docker & Meteor ライフを!