Автор оригинала: Josh Simpson.
Вступление
JavaScript прошел долгий путь в течение многих лет, и мы сейчас в точке, где вы можете очень легко написать и развернуть веб-приложение. Фрезы, как Экспресс , Паруса и Метеор только сделали это проще.
После большинства учебных пособий в Интернете означает, что вы будете работать на вашей местной машине с местным проектом. Но что, если мы хотели бы поделиться проектом с миром или нашим друзьям? Сегодня мы будем смотреть, как развернуть приложение Node.js к Капелька Digitalocean Так что кто-нибудь в Интернете может взаимодействовать с ним.
Предпосылки
Докер
Мы будем использовать Докер Чтобы контейнерировать наше приложение на небольшой, легко развертываемый блок. Это устройство может быть развернуто где угодно где установлен Docker.
Создайте учетную запись с Докер Хаб И загрузите сообщество/Desktop Edition. Мы будем использовать эту учетную запись позже!
Digitalocean
Digitalocean Является ли платным хостингом – мы будем использовать свой 5 в месяц в месяц, и мы можем выключить его, как только мы сделаем, чтобы минимизировать затраты, но вам понадобится способ оплаты, чтобы придать ему Digitalocean.
Узел приложения
Для этого мы собираемся создать простое приложение Express, которое служит конечной точке статуса для удара и выяснить, работает ли наше приложение. На командной строке давайте создадим каталог:
$ mkdir digital-ocean
А затем перейдите в каталог и инициализируйте наше приложение:
$ cd digital-ocean $ npm init
Не стесняйтесь ударить Введите
Чтобы пропустить/установить ответы по умолчанию на все следующие вопросы, или добавьте имена/описания пакетов, если вы чувствуете, что это.
Для целей настоящего Учебника мы предположим, что «точка входа» остается как index.js
Отказ Вы должны оказаться с чем-то, что выглядит так:
package name: (digital-ocean) version: (1.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) { "name": "digital-ocean", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this OK? (yes)
Если вы посмотрите в каталог сейчас ( ls
в командной строке), вы увидите одинокий Package.json
файл. Это содержит конфигурацию для нашего приложения. Давайте подпрыским там и добавьте строку в блок «скриптов»:
{ "name": "digital-ocean", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
Это позволяет нам запустить наше приложение, запустив NPM начать
Отказ Сценарии являются супер полезными для настройки задач, которые вы часто выполняете с приложением, такими как тестирование или различные процессы сборки.
Далее мы хотим установить Express:
$ npm install express
И, наконец, давайте напишем код, который будет служить нашему /Статус
конечная точка. В том же каталоге, что и наше Package.json
Файл, создать файл под названием index.js
:
const express = require('express') const app = express() const port = 3000 app.get('/status', (req, res) => res.send({status: "I'm alive!"})) app.listen(port, () => console.log(`Example app listening on port ${port}!`))
Наконец, давайте проверим наше приложение, запустив:
$ npm start
Открытие веб-браузера и навигации по http://localhost: 3000/Состояние
– Вам следует приветствовать что-то вроде этого:
{"status":"I'm alive!"}
Теперь у нас есть приложение для работы с эксплуатацией, которое мы теперь можем объединить и развернуть с помощью Docker и Server Dockle.
Докереное приложение Node.js
Теперь у нас есть рабочее приложение, но мы хотим иметь возможность развернуть его. Мы могли бы создать сервер, а затем настроить его, чтобы иметь то же самое конфигурацию, что и наш текущий компьютер, но это может быть безусловно. Вместо этого давайте упакуем его, используя Docker.
Как работает Docker
Docker позволяет нам определить набор инструкций, которые создают то, что называются Слои Отказ Если вы хотите представить, как выглядит слой, представьте свою файловую систему замороженного в моменте во времени. Каждый новый слой является модификацией или дополнением к этой файловой системе, которые снова заморожены.
Эти композиции слоев поверх друг друга образуют то, что известно как изображение , что, по сути, файловая система в коробке, готовая к работе.
Это изображение можно использовать для создания Контейнеры , которые являются живыми версиями этой файловой системы, готовые к выполнению задачи, которую мы определяем для этого.
Другим полезным аспектом этого является то, что мы можем использовать предварительные изображения в качестве первого слоя на наших собственных изображениях, давая нам jumpstart, избегая конфигураций BoaterPlate.
Строительство докера
Первое, что мы захочем сделать, это создать Dockerfile Отказ Этот файл – это набор инструкций для Docker для интерпретации, чтобы точно понять, как упаковать ваше приложение в виде изображения.
В вашей папке проекта создайте файл под названием Dockerfile
, а затем введите эти команды:
FROM node:13-alpine WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD [ "npm", "start" ]
Здесь есть несколько компонентов, давайте пройдемся через эту строку по линии:
Из узла: 10
: Сообщает Docker использовать другое изображение в качестве базового слоя в нашем DockerFile – в этом случае мы получаем изображение с установленным Node.js, версии 10.Workdir/usr/src/app
: Сообщает Docker папку, в которую она должна выполнять следующие команды.Копировать пакет * .json ./
: Рассказывает докер копировать ТолькоPackage.json
&Package-lock.json
в докерный образ. Мы делаем это, потому что Docker Can Can кэш Композиции слоев – это означает, что если ничего не изменится в нашихPackage.json
Мы можем просто потянуть композицию слоев, которые мы уже построили раньше.Запустите NPM Установить
: Делает то, что он говорит о жеребье, и бежитNPM установить
Команда для создания нового слоя изображения со всеми нашими модулями установлена. Опять же, если ничего не изменилось в нашихPackage.json
, это вытащит предварительно построенную версию.Копировать. Отказ
: Копирует остальную часть приложения в файловую систему. Поскольку приложение может измениться чаще (то есть каждый раз, когда вы делаете изменение кода), имеет смысл сделать это одним из последних слоев для целей кэширования.Выставлять 3000
: Сообщает Docker открыть порт 3000 на контейнере, когда он работает.CMD [«NPM», «Пуск»]
: БежитNPM начать
О мгновении контейнера и запускает наше приложение внутри него.
Запуск нашего докера
Теперь, когда у нас написано наши инструкции, давайте на самом деле создам наш образ! В том же каталоге, что и ваш DockerFile, запустите:
$ docker build . -t digital-ocean-app
Это создает изображение, а затем дает ему конкретное имя или «тег» – в этом случае это Digital-Ocean-App
Отказ Чтобы проверить, что наше приложение работает, давайте запустим его локально с:
$ docker run -p 3000:3000 digital-ocean-app
Это запустит наш образ докера в качестве контейнера и выполняет CMD
Часть нашего докерафа.
-P 3000: 3000
Раздел делает то, что известно как отображение порта. Номер до COMON – это порт на нашей локальной машине, который мы хотим на карте, и номер после того, как он находится в контейнере, который мы хотим, чтобы он был допущен.
Это означает, что порт 3000
На нашей машине теперь будет подключаться к порту 3000
В контейнере Docker работает наше приложение.
Чтобы проверить это, откройте свой браузер и перейдите к http://localhost: 3000/Состояние
И вы должны увидеть вашу конечную точку статуса.
Публикация изображения до докера Hub
Теперь, когда у нас есть наш упакованный образ докеров, нам нужно хранить его где-то, что мы можем потянуть его обратно. Вам нужно будет в систему обратно в Докер Хаб , а затем нажмите «Создать репозиторий» Отказ Как правило, как Git Repositories позволяют нам хранить наши контролируемые версиями Git Projects, Docker Repositories позволяют нам хранить наши изображения Docker.
Вам нужно будет заполнить название репозитория, а также необязательное описание, а также ли он публичный или частный репозиторий (независимо от того, необходимо ли вы войти в систему как авторизованный пользователь Docker, в основном).
На данный момент оставьте его на публике, так как он будет проще нашу жизнь, когда мы стараемся развертывать на Diumperocean. Наконец, прокрутите вниз и нажмите «Создать» Отказ
Вернуться на командную строку, нам нужно пометить наше изображение, прежде чем мы нажимаем:
$ docker tag digital-ocean-app/digital-ocean-app
Нам нужно будет заменить
Раздел с нашим именем пользователя Docker Hub. При желании, если мы хотим указать, что мы нажимаем конкретную версию нашего изображения, мы можем сделать:
$ docker tag digital-ocean-app/digital-ocean-app:
<Версия>
называется «изображением изображений» – мы могли бы поставить номер там ( 1.0
, 1.1
и т. Д.) Для представления выпуска или даже описывают среду ( Dev
, Постановка
| prod ). Я склонен использовать HIT Commit Hash, чтобы я точно знаю, что я бегу и могу сравнить с моей историей совершения.
По умолчанию каждый раз, когда вы нажимаете, ваш репозиторий автоматически создаст изображение с тегом : последние
Итак, мы всегда знаем, что является самым недавно толщеным изображением.
Чтобы иметь возможность подталкивать на наш репозиторий, нам нужно будет войти в систему:
$ docker login
Введите свои учетные данные Docker Hub.
Как только вы успешно вошли в систему, вы сможете нажать свое изображение:
$ docker push/digital-ocean-app:
Digitalocean
Наконец, мы можем развернуть наше приложение на Dockerized на Digitalocean. Во-первых, давайте пойдем создать учетную запись:
Вам придется дать несколько личных данных, включая реквизиты платежей, а также создание первоначального проекта. Не стесняйтесь просто дать ему имя, но если вы планируете делать все обширные, выберите несколько вариантов, чтобы оптимизировать настройку.
После завершения вы будете перенаправлены на страницу корней для вашего проекта. С левой стороны – панель инструментов с несколькими вариантами. Не стесняйтесь исследовать – Digitalocean – это хорошо, чтобы вы знали, если то, что вы собираетесь сделать, будет стоить вам.
Создание ключа SSH
Прежде чем делать что-либо, нам нужно создать SSH Key и загрузить общедоступную часть к Digitalocean. SSH Клавиши входят в две части, открытый ключ и закрытый ключ.
Частный ключ используется для аутентификации пользователя в систему. Система делает это, выполняя функцию, используя открытый ключ, чтобы убедиться, что закрытый ключ используется для генерации открытого ключа. Если это так, они оба пришли из того же места, и поэтому пользователь можно доверять.
Digitalocean захочет открытый ключ, который он может разместить на любых капельках, которые мы начинаем, чтобы мы могли получить доступ к ним с ключом, который мы знаем только Мы имеют.
Давайте создадим SSH KeyPair сейчас:
$ ssh-keygen -t rsa -b 4096
Эта команда должна работать на Windows, Linux и MacOS.
Это попросит вас файл, где вы хотите сохранить ключ, который вы можете назвать что-то вроде – Цифровой океан-ключ
Отказ
Это также попросит парольную фразу – не стесняйтесь устанавливать один, если хотите, или вы могли бы оставить его пустым. Если вы создали его в той же папке, поскольку мы работаем, вы увидите два файла – один под названием Цифровой океан-ключ
И один называется Digital-ocean-key.pub
– Это соответственно ваши частные и публичные ключи.
Добавление ключа SSH на вашу учетную запись Digitalocean
На вашей учетной записи на цифровой плате, на нижней левой части, есть ссылка для «Безопасность» Отказ Следуйте по этой ссылке, и следующая страница будет возможность добавить ключ SSH:
Нажмите «Добавить клавишу SSH» И вам будет представлено диалоговое окно для ввода вашего ключа. Просто скопируйте содержимое вашего Digital-ocean-key.pub
В большую текстовое поле (вы можете получить содержимое напечатано к терминалу с Cat Digital-ocean-key.pub
).
В меньшую коробку под ним дайте это ключевое имя.
Настройка капельки на цифровой камень
Как только вы добавили свой ключ SSH. Нажмите на «Капельки» Ссылка слева, а затем на следующей странице нажмите «Создать капельку» Отказ
В Digitalocean капля представляет собой частный виртуальный сервер, который можно легко настроить и использовать для запуска ваших приложений.
На этой странице вы будете представлены рядом вариантов для настройки капельки Digitalocean, включая распределение, план, размер/стоимость в месяц, регион и аутентификацию.
Вместо того, чтобы выбрать распределение и настроить самих себя, мы собираемся получить Digitalocean создать капельку, которая уже имеет докер, работающий на нем для нас.
Нажмите на «Рынок» Над различным дистрибутивам Linux – именно здесь вы можете найти различные существующие конфигурации – это капельки, которые при запуске начнутся с описанного программного обеспечения уже установленного.
Это экономия в реальном времени, и означает, что мы можем запустить несколько экземпляров с той же конфигурацией, если мы хотели, вместо того, чтобы индивидуально настроить их все.
Там должен быть вариант для Docker Dainlet Отказ Если нет, нажмите «Смотрите все Apps Marketplace» , и вы сможете найти подходящую конфигурацию докера:
Под «План» , мы хотим выбрать «Стандарт» Отказ Давайте выберем вариант 5 в месяц на демонстрационные цели.
Не стесняйтесь выбирать, какой регион подходит для вас – вообще самый близкий будет легче получить доступ к доступу, но не должно иметь масштабное воздействие.
Под аутентификацией выберите «SSH ключ» и выберите, какие ключи вы хотели бы использовать (например, вы создали на последнем шаге). Вы также можете назвать свою каплю, если хотите. Когда вы закончите, нажмите «Создать капельку» внизу.
Подождите минуту для вашей капли, чтобы начать. Это появится под «Капельки» Панель с зеленой точкой рядом с ним, когда он готов и готов. На данный момент мы готовы подключиться к нему.
Бег изображения докера на капель
Нажмите на начальную капельку, и вы увидите подробности об этом. На данный момент мы заинтересованы в IP-адресе – это адрес, в котором кавка находится в Интернете.
Чтобы получить доступ к нему, нам нужно подключиться к нему, используя наш ранее созданный закрытый ключ. Из той же папки, что и клавиш, запустите:
$ ssh -i digital-ocean-key [email protected]
-Я цифровой океан-ключ
Указывает, что вы используете клавишу SSH, и где находится эта клавиша. [Защищена электронная почта]
Определяет пользователя и адрес, который вы пытаетесь подключиться к – в этом случае пользователь мы пытаемся подключиться к корень
И IP-адрес будет адресом капельки Digitalocean.
После того, как вы подключите к экземпляру, это просто простой вопрос запуска вашего докера. Если вы оставили его в публичном репозитории, вы можете легко запустить его, используя то же имя, которое вы использовали для его нажимания:
$ docker run -p 3000:3000/digital-ocean-app:
Если вы поместите его в частный репозиторий, вам нужно войти в систему с Докер Логин
Опять перед запуском вашего Docker Run
команда.
Как только ваш контейнер Docker работает, откройте вкладку в браузере и перейдите к
– где
Является ли IP-адрес капельки Digitalocean, на котором вы запускаете контейнер.
Вы должны быть представлены с вашим ранее созданным статусным конечным точком – поздравления! Теперь у вас есть приложение Node.js работает на Digitalocean!
Заключение
Есть несколько направлений, которые вы можете пойти отсюда. Во-первых, вы, вероятно, захотите построить ваше приложение, чтобы оно больше полезных.
Возможно, вы захотите посмотреть на покупку домена для размещения вашего приложения, и указывая на то, что на вашей капельке на цифровой камере, чтобы получить доступ к прошедшему.
Я также рекомендую исследовать некоторые остальные возможности на цифровых моментах – вы можете использовать некоторые из своих сетевых инструментов для защиты вашей капли, ограничивая доступ к порту SSH (22), изучите некоторые другие изображения, которые имеют докер или Даже посмотрите на прядильные базы данных для вашего приложения!