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
Заполните указанный псевдоним изображения:
или используйте следующую команду сборки докеров
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
Проверьте это с помощью curl:
$ curl localhost:8888
hello world%
docker container ls # 获取所有正在运行中的 container
docker images # 获取所有 images
сделано 🔥
Пожалуйста, обратите внимание на мой номер подписки, время от времени я буду выкладывать технические статьи о JS, только говорить о технологиях, а не сплетничать 😊