Рубрики
Uncategorized

Как создать приложение узла внутри контейнера Docker с Mongo

Введение Это вторая часть серии для Docker встречает Nodejs, где мы идем … Tagged с Docker, Node, JavaScript, Devops.

Docker встречает Nodejs (3 частью серии)

Это вторая часть серии для Докер встречает Nodejs Где мы собираемся представить услугу базы данных, Монгодб , который мы подклюжим к нему с нашим приложением узла через сеть.

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

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

Примечание : Не забудьте клонировать docker_nodejs_app репо здесь

Реконструировать

На первой части серии мы смогли:

  • Настройка проекта
  • Создать контейнер узла

Цели

Мы должны быть в состоянии:

  • Добавьте сервис MongoDB, в котором мы сможем получить доступ через сеть.

О услугах

Услуги в основном являются группой контейнеров, они облегчают масштабирование вашего приложения.

Давай код

Для подключения к нашей базе данных Mongo с узлом нам нужно установить новую зависимость под названием Мангуст Отказ

$ npm install mongoose --save

Давайте подключите приложение нашего узла к базе данных, которая не существует, добавив пару строк в нашем app.js файл.

// Connect to database
mongoose.connect("mongodb://mongo:27017/docker_nodejs_app", {
  useNewUrlParser: true,
  useCreateIndex: true
});

mongoose.connection.on("open", err => {
  if (err) console.log(chalk.red("Error connecting to our mongo database"));
  console.log(chalk.green("Connected to mongo database successfully"));
});

Примечание : Если вы использовали Mongoose и Mongo до того, как ваш локальный или MLAB URL URL может выглядеть так MongoDB://localhost: 27017/ или Mongodb://: @ ds115595.mlab.com: 15595/ соответственно и не MongoDB://Mongo: 27017 . Это потому, что наша служба базы данных Mongo будет называться Монго И поскольку он существует в докеренном контейнере, а не на месте на вашем диске мы распределим порт 27017 в ее контейнере.

Ваш app.js файл должен выглядеть так

"use strict"; // Ensures our code is compiled in strict mode

// Lets import our web framework
var express = require("express");
var mongoose = require("mongoose");

// Initialise our app
const app = express();

// Lets set our port
/**
 * The default port number is `3000`
 * Take note on that as we will come to that.
 */
app.set("port", 3000);


// Connect to database
mongoose.connect("mongodb://mongo:27017/docker_nodejs_app", {
  useNewUrlParser: true,
  useCreateIndex: true
});

mongoose.connection.on("open", err => {
  if (err) console.log("Error connecting to our mongo database");
  console.log("Connected to mongo database successfully");
});

/**
 * To ensure works as it should we will create a
 * simple endpoint to return a json response
 */

// Define our json response
const data = {
  blog_name: "docker_nodejs_app",
  blog_author: "wachira (tesh254)",
  blog_author_twitter: "@wachira_dev"
};

// Define out GET request endpoint
app.get("/", (req, res) => {
  res.status(200).json(data);
});

// Initialize our server
app.listen(app.get("port"), () => {
  console.log(`Server listening on port ${app.get("port")}`);
});


Если мы запустим наше приложение узла, мы должны получить ошибку

Создайте нашу услугу MongoDB

Для того, чтобы построить и запустить пару услуг, нам нужно представить Docker-Compose.yml Файл, который содержит определенные конфигурации, которые позволят этому.

$ touch docker-compose.yml

Введите это в Ямл файл

# Defines our composer file version
version: "2.2"
# Define our services 
services: 
  # This is our nodejs app built using the Dockerfile
  app:
    # The name of our node app container
    container_name: docker_nodejs_app
    # Restarts our node app whenever it fails
    restart: always
    # Builds the node app docker container from the local -
    # Docker file we created
    build: .
    # Exposes the necessary ports that our node app uses
    ports:
      - "3000:3000"
    # All the services our node app will link to -
    # which in our case is only mongo
    # You can other services such as a Redis
    links:
      # The name should be similar to the service you will build
      - mongo
  # Our database service called mongo
  mongo:
    # The name of the database container, NOTE: it is similar to the name provided
    container_name: mongo
    # Builds a mongo image from the docker repository
    image: mongo
    # Exposes the ports that Mongo uses
    ports:
      - "27017:27017"

Чтобы запустить наши конфигурации, мы будем использовать Docker-Compose Команда … Подожди, откуда это пришло? 😳

Команда Docker-Compose Поставляется с программным обеспечением Docker, он выполняет конфигурации в Docker-Compose.yml файл.

Чтобы создать и запустить наше приложение и услуги Mongo, введите это в свой терминал

$ docker-compose up

Что произойдет дальше, займет немного дольше … 😇… Свободное время … Может быть, сделать себе чашку кофе ☕️ или проверить Твиттер

Что происходит дальше, докер:

  • Вытягивает изображение Mongo из удаленного репозитория Docker
  • Загрузки Mongo в Cache Dockers

  • Запустить экземпляры Mongo

  • Создает наше приложение узла
  • Запускает наш сервер и успешно подключается к базе данных Mongo.

Что дальше после успешной сборки?

Вы можете проверить базу данных, создавая пару

  • Опубликовать запросы для сохранения данных в коллекции базы данных Mongodb
  • Получите запросы, чтобы получить данные из коллекции базы данных
  • Поместите запросы на обновление данных в коллекции базы данных
  • Удалить запросы для удаления данных в коллекции базы данных

Резюме

Подводя итоги, в этом посте у нас есть:

  • Подключен к базе данных MongoDB
  • Введение в Docker-Compose команда

Следующий

В следующей части:

  • Мы приведем наше приложение на Heroku
  • Нажмите наше репо в репозиторий Docker.
  • Другие команды в Docker, которые сделают ваш опыт стоит, например:
    • Очистка кеша контейнера
    • Удаление, остановка контейнеров докеров

Экстрас

Docker встречает Nodejs (3 частью серии)

Оригинал: «https://dev.to/wchr/how-to-create-a-node-app-within-a-docker-container-with-mongo-5886»