Amazon Elastic Beanstalk の Node.js コンテナの中身(1)

Amazon Elastic Beanstalk の Node.js コンテナのデプロイの仕組みを見てみます。 node.js 起動設定は下記のようになっています。

/etc/init/nodejs.conf

# nodejs - Nodejs server
#

description "Nodejs server"
stop on runlevel [!2345]

respawn
respawn limit 30 60

exec su -s /bin/sh -c 'PATH=$PATH:$NODE_HOME/bin $EB_NODE_COMMAND 2>&1' nodejs >> /var/log/nodejs/nodejs.log

post-stop script
if /usr/bin/pgrep -u nodejs; then
/usr/bin/pgrep -u nodejs | /usr/bin/xargs kill -9
fi
end script

chdir /var/app/current

# Environment Variables
env HOME="/tmp"
env EB_NODE_COMMAND="node app.js"
env PORT="8081"
env NODE_HOME="/opt/elasticbeanstalk/node-install/node-v0.12.2-linux-x64"

まず、デプロイが行われると、/var/app/current にアプリケーションが配置されます。 接続先ポートは環境変数の PORT で取得すればよいことがわかります。 また、起動コマンドは node app.js となっているため、アプリ側で起動コマンドを変更している場合は注意が必要です。