Dotcloud - это облачная платформа для развертывания приложений. Стек на DotCloud включает в себя более 10 различных сервисов среди которых есть и Node.js.
Мои первые впечатления от DotCloud были весьма положительные. Можно практически забыть о том как развертывать приложение и полностью сосредоточится на коде. Работа по развертыванию сводится к установке DotCloud CLI и настройке файла окружения dotcloud.yml. Установка клиента под Linux/MacOS тривиальна:
sudo easy_install pip
sudo pip install dotcloud
Подготовка к развертыванию
Для развертывания приложения на Dotcloud необходим файл dotcloud.yml, который описывает сервисы к которым приложение будет иметь доступ. Полный список приложений можно посмотреть по ссылке. Для доступа к стеку NodeJS + Redis файл dotcloud.yml может иметь следующий вид:
www:
type: nodejs
data:
type: redis
Если приложение на NodeJS использует дополнительные пакеты, то можно использовать файл package.json, в котором указать зависимости от других пакетов. Пакеты будут автоматически установлены при развертывании. Пример файла package.json:
{
"engines": {
"node": ">=v0.4.5"
},
"dependencies": {
"redis": ">=0.6.6",
"express": ">=2.4.2"
}
}
Для автоматического запуска приложений на NodeJS необходимо создать третий файл с названием supervisord.conf и указать в нем путь запуска
[program:node]
command = node index.js
directory = /home/dotcloud/current
Использование environment.json
Получить доступ к стеку сервисов которые были указаны в файле dotcloud.yml очень просто. После развертывания приложения к домашней директории создается файл environment.json, содержащий информацию для доступа к сервисам. Используя этот файл можно настроить приложение для автоматического использования настроек к базам данных не заботясь о ручной настройке. Поскольку я указал Redis в качестве базы данных в файле dotcloud.yml и назвал его data, то для получения настроек к Redis из приложения на NodeJS достаточно написать:
var envfilepath = '/home/dotcloud/environment.json',
environment = JSON.parse(require('fs').readFileSync(envfilepath));
var host = environment['DOTCLOUD_DATA_REDIS_HOST'],
port = environment['DOTCLOUD_DATA_REDIS_PORT'],
pass = environment['DOTCLOUD_DATA_REDIS_PASSWORD'];
Развертывание
Для создания приложения на Dotcloud необходимо написать в консоле:
dotcloud create appname
appname - в данном случае имя приложения, которое может быть любым. Ну и непосредственно пуш приложения на Dotcloud
dotcloud push appname ~/path-to-node-app/
При успешном деплое выдадут www адрес для доступа к приложению
Deployment finished successfully. Your application is available at the following URLs
www: http://d07c100d.dotcloud.com/
Что еще можно сделать
Использование собственного доменного имени. Для этого надо прописать DNS запись для соответствующего домена:
CNAME gateway.dotcloud.com.
И добавить алиас к своему приложению на Dotcloud:
dotcloud alias add appname.www www.example.com
Также можно подключится по SSH
dotcloud ssh appname.www
Полный список команд можно получить в подробной документации на официальном сайте.