Исторически сложилось так, что развертывание приложений Meteor было довольно сложным. Получение SSL, веб-сокетов и липких сессий может быть непростым делом.

К счастью, с такими вещами, как Docker и Caddy, развертывание приложений производственного качества становится проще.

Я собираюсь развернуть Rocket Chat на приставке Digital Ocean за 5 долларов, и в ней будут веб-узлы, липкие сеансы, SSL, и это займет менее 10 минут.

Минута 1: Цифровая капля океана

Я собираюсь предоставить Ubuntu 16.04, 5 долларов США, SFO-1.

Минута 2: установка Docker

SSH в поле DO и вставьте следующее:

curl -fsSL https://get.docker.com/ | sh

Это заняло около 1 минуты.

Минута 3: Добавьте свои записи DNS

Я собираюсь использовать домен rocket-chat.paytagz.com (paytagz.com - это домен, которым я уже владею)

Просто создайте новую запись A, указывающую на ваш IP-адрес DO (я использую Route53).

Минуты 4–7: запуск док-контейнера Rocket Chat.

Rocket Chat поставляется с официальным образом докера, который можно найти здесь.

Вернитесь к своему терминалу, в котором находится ваш SSH, и создайте контейнер Rocket Chat следующим образом:

docker run --name rocketchat \
  -p 3000:3000 \
  --env ROOT_URL=https://rocket-chat.paytagz.com \
  --env MONGO_URL=mongodb://<your mongo here> \
   -d rocket.chat

Я немного схитрил на этом этапе, потому что у меня уже есть mongodb, настроенный на compose.io (который я настоятельно рекомендую для производственных развертываний Meteor, потому что это намного проще, чем размещение вашей собственной БД).

Итак, теперь вы можете посетить IP-адрес вашего DO-бокса на порту 3000 и увидеть, как работает ваше приложение.

Минуту 8: Создание файла Caddyfile

Теперь вам нужно создать то, что называется Caddyfile. По сути, это файл nginx.conf, который проще создавать и понимать.

В вашем терминале создайте Caddyfile

touch Caddyfile

Затем отредактируйте это

vim Caddyfile

Ваш должен выглядеть примерно так (замените мой IP и домен на свои).

rocket-chat.paytagz.com {
  proxy / {
    policy ip_hash
    websocket
    transparent
    upstream http://162.243.130.9:3000
  }

Минута 9: Запуск Кэдди в контейнере

Выполните следующую команду в том же каталоге, что и Caddyfile, который вы создали выше.

docker run -d \
    -v $(pwd)/Caddyfile:/etc/Caddyfile \
    -v $HOME/.caddy:/root/.caddy \
    -v /etc/ssl/certs:/etc/ssl/certs \
    -p 80:80 -p 443:443 \
    khamoud/caddy

Теперь, если я захожу на https://rocket-chat.paytagz.com, я увижу, что мой ракетный чат полностью настроен с использованием веб-сокетов, SSL и закрепленных сеансов.

Если вы хотите узнать, как докеризовать свое собственное приложение Meteor, вы можете ознакомиться с моими руководствами по добавлению метеора ниже.

Dockerizing Meteor Pre-1.4

Докеризация Метеора 1.4

Если вы ищете еще более простой хостинг для докеров, вам следует рассмотреть https://www.rompli.com;)