SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
Список вопросов ПечатьМетки: docker node.js html .dockerignore
У меня есть приложение, написанное на NodeJS. Как я могу упаковать его в образ Docker, чтобы запускать как контейнер?
| vk39672097 Создано: 2017-12-08 20:52:20.959622 Обновлено: 2017-12-08 20:52:20.959622 |
|---|
|
Docker - система управления контейнерами в POSIX-совместимых операционных системах (на данный момент поддерживается Linux). Особенностью Docker является возможность упаковать приложение со всем необходимым окружением таким образом, чтобы запускать его на другой системе без долгих и сложных процедур установки зависимостей или сборки из исходников. Запакованное приложение, готовое к развёртыванию, называется "образом". Образы Docker основываются на "шаблонах" - предварительно настроенных рабочих окружениях. Можно рассматривать это как дистрибутивы операционной системы, хотя это и не совсем так. Кроме того, изучив документацию на Docker, вы сможете создать собственный шаблон. Преимуществом такого подхода является то, что образ вашего приложения будет содержать только само приложение, а необходимое для него окружение будет скачиваться автоматически из репозитория шаблонов. Docker слегка напоминает chroot или bsd jail, но работает иначе. Важно различать для себя понятия "контейнер" и "образ". Контейнер - это выполняющаяся копия вашего приложения, а образ - это файл, в котором хранится приложение, и из которого и создаётся контейнер. Предположим, что у вас есть приложение на NodeJS, которое вы хотите упаковать в контейнер. Предположим, что файл, который запускает ваше приложение называется server.js, а для работы приложение слушает порт 8000. В качестве шаблона мы будем использовать "node:carbon". Для контейнеризации приложения вам нужно создать в каталоге, где расположены файлы вашего приложения, файл "Dockerfile", в котором будут описаны параметры подготовки образа:
Содержимое файла может быть примерно таким:
Чтобы исключить ненужные файлы из образа, вы можете перечислить их имена в файле ".dockerignore". Допускается использование маски (*.log). Сборка образа осуществляется следующей командой:
Где username - это условное имя автора образа, а node-web-app - имя образа. После сборки образ появляется в локальном хранилище образов. Вы можете увидеть список имеющихся образов, введя команду "docker images".
Запуск контейнера из образа производится следующей командой:
В этом примере создаётся контейнер из образа "username/node-web-app" и сразу запускается. Порт приложения 8000 доступен на локальной машине (localhost) и для того, чтобы он был доступен "снаружи", он "пробрасывается" на порт 49160. Можно выбрать любой свободный порт, кроме того возможно пробросить порт приложения "как есть", указав опцию "-p 8000:8000". Вы можете увидеть что ваш контейнер выполняется, введя команду:
Управление контейнером можно осуществлять различными командами, указывая ID этого контейнера:
|