В этой статье мы узнаем, как начать работу с Nodejs, Express и Docker. Если вам нужны основы того, как использовать Docker, я бы посоветовал вам прочитать мою статью о понимании оснований Docker.
Docker — Понимание оснований
Emma Donery для Lux Tech Academy ・ 12 августа ・ 5 минут читать
Предварительные условия
- JavaScript
- Основы Docker
Понимание докера
Docker это платформа с открытым исходным кодом, которая предоставляет открытую платформу для создания, доставки и запуска распределенных приложений. Он автоматизирует процедуры рутинной конфигурации и используется во всем жизненном цикле разработки для создания быстрых, простых и портативных приложений.
Понимание Nodejs и выражение
Node.js является структурой времени выполнения JavaScript, которая используется для создания сетевых и серверных приложений.
Экспресс это небольшая структура, которая находится на вершине функциональности веб -сервера Node.js, которая предоставляет надежный набор функций для разработки веб -и мобильных приложений.
Зачем делать ваше приложение
- Быстрое развертывание приложений
- Портативность между машинами
- Управление версиями и повторное использование компонентов
- Совместное использование изображений/dockerfiles
- Легкая площадь и минимальные накладные расходы
- Упрощенное обслуживание
Nodejs приложение
- Создайте новый каталог, где будут жить все файлы
- Создайте файл package.json в этом каталоге для определения вашего проекта и его зависимостей:
{ "name": "express_app", "version": "1.0.0", "license": "MIT", "description": "Node.js and express on Docker", "author": "Firstname Lastname", "main": "app.js", "scripts": { "start": "node app.js" }, "dependencies": { "express": "^4.16.1" } }
- Используя структуру Express.js, создайте файл app.js, который описывает веб -приложение:
const express = require('express') const app = express() const PORT = 3000 const HOST = '0.0.0.0' // App const app = express() app.get('/', (req, res) => { res.send('Hello World') }); app.listen(PORT, HOST) console.log(`Our app running on http://${HOST}:${PORT}`)
Запустить приложение
$ node app.js
Перейти к http://localhost: 3000/ в вашем браузере, чтобы просмотреть его.
Задачи на приложение
- Создайте пустой Dockerfile
Dockerfile
FROM node:12-alpine3.14 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD [ "node", "app.js" ]
Вот что происходит:
Установите рабочий каталог на/usr/src/app
Скопируйте файл package.json в/usr/src/app
Установите node_modules
Скопируйте все файлы из корнета проекта/usr/src/
- Создать .dockerignore
node_modules npm-debug.log
Nb : Если вы работаете с GIT, то вы также захотите добавить свой каталог .git и .gitignore.
- Построить изображение Docker
$ docker build -t hello-world .
- Запустите контейнер Docker
$ docker run -p 8080:8080 hello-world
Обмен изображением Docker Чтобы вы поделились изображением Docker, вам нужно сначала зарегистрироваться в Docker Hub. Docker Hub — это сервис Docker, которая позволяет вам найти и делиться изображениями контейнеров с вашей командой. После регистрации:
- Воспроизведите изображение с помощью учетных данных Docker Hub.
- Войти в Docker Hub
- Нажмите изображение в концентратор Docker
Поздравляю! 🎉 🎉 Изображение теперь можно использовать на любом сервере или ПК, на котором установлен Docker:
docker run [USERNAME]/hello-world
Docker Compose
Docker Compose-это инструмент для запуска мультиконтравейных приложений на Docker. Вы настраиваете сервисы вашего приложения с помощью файла YAML. Затем вы создаете и начинаете все услуги из своей настройки с одной командой.
Compose позволяет запущать приложения в одном или более контейнерах простым. Чтобы построить или выполнять контейнеры, нам не нужно помнить особенно длинные команды. Ваши приложения будут работать гладко, если вы можете запустить сборку Docker-Compose и составить Docker.
- В каталоге Project Root создайте файл docker-compose.yml.
Docker-Compose.yml
version: '3.8' #specifies docker compose version services: web: build: context: ./ target: dev volumes: - .:/src command: npm run start:dev ports: - "8080:8080" environment: NODE_ENV: development DEBUG: nodejs-docker-express:*
В этой статье у меня есть веб -сайт по имени услуг, в котором есть контекст сборки и целевой набор для Dev. Это говорит Docker, что я хочу построить изображение Docker на стадии разработки.
том Инструктирует Docker скопировать и синхронизировать изменения из локального каталога ./Хоста с/src в контейнере Docker.
Раскрытие порта 8080 открывает порт, где веб -сервер Node.js Express работает по умолчанию.
Создайте и запустите свое приложение с помощью Compose
- Запустите приложение, запустив команду Docker-Compose Up
$ docker-compose up
Доступ http://localhost: 8000/ в браузере, чтобы увидеть запуск приложения.
Остановите запуск приложения, используя команду Docker-Compose Down.
$ docker-compose down
Вывод
Docker Compose — отличный инструмент для запуска многочисленных контейнеров. Ради этой статьи я использовал исключительно node.js с одним контейнером, работающим на докере.
Node.js и docker ладят по лакированию. Опыт разработки в значительной степени более гладкий, когда используется Docker-Compose. Вы можете использовать эту статью в качестве отправной точки для изучения более продвинутых навыков Docker и Node.js.
😊 Удачи кодирование! 😊 Обязательно оставьте какие -либо комментарии для меня.
Вы можете связаться со мной в Твиттере https://twitter.com/emmadonery или LinkedIn https://www.linkedin.com/in/emma-donery-0831a7188/
Оригинал: «https://dev.to/emma_donery/getting-started-with-nodejs-express-and-docker-5ffa»