Docker быстро развертывает приложение Node.

Node.js Docker

Docker быстро развертывает приложение узла

⭐️ Чтобы узнать больше о передовых технологиях и знаниях, найдите номера подписки.JS 菌подписка

Для быстрого развертывания приложения узла с помощью Docker необходимо выполнить следующие шаги:

  • Установите Docker и плагин VSCode Docker (простой в использовании Docker)
  • Создание приложения узла
  • Создайте Dockerfile и упакуйте приложение как образ
  • Создать образ для создания контейнера

Сначала установите Докер

Для установки Docker см. официальную документацию, которая очень подробная.docs.docker.com/docker-foru-…

Затем установите плагин VSC для Docker, который устанавливается только для удобства работы с Docker.

После завершения установки откройте службу Docker и выполните команду, чтобы проверить, завершена ли установка:

$ docker -v
Docker version 18.09.2, build 6247962

Наконец, используйте внутренний зеркальный источник:

https://registry.docker-cn.com

создать приложение узла

Наша цель — предоставить порт в контейнере nginx, который является нашим упакованным приложением узла, и внешний доступ к нашему сервису через этот порт.

npm init
npm install -S express

После завершения установки создайте простое приложение узла:

// app.js
const express = require('express')
const url = require('url')
const execa = require('execa') 

const app = express()

app.use((req, res, next) => {
    console.log(url.resolve(req.url))
    res.end('hello world')
})

app.listen(8888, () => {
    console.log('listening at port: 8888')
})

Создать Dockerfile

Затем VSC звонит>dockerfileСоздайте новый файл докеров с помощью плагина докеров, выберите узел в параметрах

Плагины автоматически создаются в текущем каталогеDockerfile, docker-compose.yml, docker-compose.debug.yml, .dockerignore

Структура каталогов следующая:

.
├── Dockerfile
├── app.js
├── docker-compose.debug.yml
├── docker-compose.yml
├── node_modules
├── package.json
└── yarn.lock

В образ Docker мы обязательно упаковываем только нужные файлы, например.dockerignore .gitignoreТакой файл определенно не упакован.

Автоматически создается плагином Docker.dockerignoreАвтоматически поможет нам написать файл конфигурации:

node_modules
npm-debug.log
Dockerfile*
docker-compose*
.dockerignore
.git
.gitignore
.env
*/bin
*/obj
README.md
LICENSE
.vscode

Наконец, давайте отредактируем DockerFile

FROM node
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production --silent && mv node_modules ../
COPY . .
EXPOSE 8888
CMD node app.js
  • FROM указывает базовый образ
  • ENV настроить переменные среды
  • WORKDIR указывает рабочий каталог
  • COPY копирует файлы конфигурации, такие как package.json, в рабочий каталог.
  • RUN выполняет команду для установки зависимостей
  • COPY копирует файл проекта app.js в указанный рабочий каталог.
  • EXPOSE открывает порт 8888
  • CMD выполняет команду для запуска проекта

Разницу между RUN и CMD см. в этой статье.stackoverflow.com/questions/3…

упаковано как изображение

Dockerfile и файл проекта созданы, затем нам нужно запаковать проект в iamge через Docker:

>dockerbuild

Заполните указанный псевдоним изображения:

20190714225154.png

или используйте следующую команду сборки докеров

docker build -t essearch/ess-elasticsearch:1.7.6 --build-arg number_of_shards=5 --build-arg number_of_replicas=2 --no-cache .

Наконец создайте контейнер

Наконец, создайте контейнер для доступа к приложению через открытый порт.

>dockerrun

или выполнитьdocker runЗаказ:

$ docker run --rm -d -p 8888:8888/tcp test:latest
265575b6dc2866a6fa778ee74ad71d823554e1d96f577b31034ba544177204cb

20190714225501.png

Проверьте это с помощью curl:

$ curl localhost:8888
hello world%                                    
docker container ls # 获取所有正在运行中的 container
docker images # 获取所有 images

сделано 🔥

JS 菌公众账号

Пожалуйста, обратите внимание на мой номер подписки, время от времени я буду выкладывать технические статьи о JS, только говорить о технологиях, а не сплетничать 😊