美文网首页
Docker+nodejs+mongodb环境搭建

Docker+nodejs+mongodb环境搭建

作者: lenbolan | 来源:发表于2021-01-29 17:57 被阅读0次

一、 准备工作

  1. 下载安装Docker:
    https://www.docker.com/get-started
    截屏2021-01-29 上午11.15.59.png

也可以通过homebrew来安装

  1. 安装好后,打开设置,设置国内源


    截屏2021-01-29 上午11.19.32.png
截屏2021-01-29 上午11.45.16.png

国内源,可同时设置多个:

docker官方中国区 https://registry.docker-cn.com
网易 http://hub-mirror.c.163.com
ustc http://docker.mirrors.ustc.edu.cn
阿里云 http://<你的ID>.mirror.aliyuncs.com

  1. 下载安装Node.js:
    http://nodejs.cn/download/
    截屏2021-01-29 下午1.18.31.png
// 查看是否安装成功
$ npm -v

$ node -v

// 更换淘宝源
$ npm config set registry https://registry.npm.taobao.org

// 查看是否更换成功
$ npm config get registry
  1. 下载安装vscode:
    https://code.visualstudio.com
    截屏2021-01-29 上午11.13.57.png

安装Docker插件:

截屏2021-01-29 上午11.58.07.png

二、开始搭建

  1. 安装 express-generator (Express 应用框架生成器),用于创建测试项目
    https://www.expressjs.com.cn/starter/generator.html

    截屏2021-01-29 下午1.51.38.png
  2. vscode中打开一个空文件夹,command + j 打开终端,
    执行 $ express,生成新项目。

// 生成新项目
$ express

// 安装依赖
$ npm install

// 启动项目
$ npm start

在浏览器中打开:http://localhost:3000
一切正常的话,页面中会显示如下内容:

截屏2021-01-29 下午2.52.36.png

回到vscode终端,按control + c退出npm

安装依赖 mongoose (用于操作mongodb) 和 nodemon (用于更改源代码后自动重启应用)

$ npm install --save mongoose

$ npm install --save nodemon

安装好 nodemon后,修改 package.json文件:

"start": "node ./bin/www"
// 修改为:
"start": "nodemon ./bin/www"
截屏2021-01-29 下午4.03.44.png
  1. 通过 vscode 生成 Dockerfile,在 vscode 中,按 command + shift + p
  • 在弹出的输入框中输入:docker: add
  • 在下面筛选出来的列表中选择 Docker: Add Docker Files to Workspace...
  • 在弹出的下一步中选择Node.js
  • 第三步选择package.json
  • 输入端口号,默认为 3000,确认按回车
  • 问是否包含 Docker Compose files,选择 Yes

操作完成后,会生成3个新文件:Dockerfiledocker-compose.ymldocker-compose.debug.yml,主要看前两个。

截屏2021-01-29 下午3.47.39.png 截屏2021-01-29 下午3.47.52.png

部署时,会按Dockerfile文件里的步骤执行

在Dockerfile中,npm install前面添加一行,以修改源:

RUN npm config set registry https://registry.npm.taobao.org

修改后如图:


截屏2021-01-29 下午4.53.44.png
  1. docker-compose.yml中添加配置
    volumes: 
      - .:/usr/src/app
    links: 
      - mongodb
  mongodb:
    image: mongo:latest
    ports: 
      - 27017:27017
    volumes: 
      - data:/data/db

volumes: 
  data:

修改后如下:


截屏2021-01-29 下午3.57.52.png
  1. vscode 下面的终端中输入:docker-compose up 进行部署。在 MacWindows 中安装的 Docker 自带有docker-compose。至此,环境已经部署好了,接下来修改项目源码,添加对 mongodb 的操作进行测试。

三、测试

  1. 添加文件夹 models,在 models 中添加 persons.js
    截屏2021-01-29 下午5.36.53.png
    内容如下:
const mongoose = require("mongoose");

const personsSchema = new mongoose.Schema({
    name: String,
    gender: String,
    age: Number
});

module.exports.Persons = mongoose.model("Persons", personsSchema);
  1. app.js 中添加代码:
var mongoose = require("mongoose");
mongoose.connect("mongodb://mongodb:27017/test", { useNewUrlParser: true });

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'CONNECTION ERROR'));
db.once('open', function() {
  console.log("connected");
});
  1. 修改 routes/index.js 后如下:
var express = require('express');
var router = express.Router();
var { Persons } = require('../models/persons');

/* GET home page. */
router.get('/', async function(req, res, next) {
  const persons = await Persons.find();
  res.render('index', { title: 'Persons', persons: persons });
});

module.exports = router;
  1. 修改 view/index.jade 后如下:
extends layout

block content
  h1= title
  ul
    for person in persons
      li.listItem
        | Name: #{person.name}
        | Gender: #{person.gender}
        | Age: #{person.age}

    else
      p No Person Found
  1. 保持终端在当前项目目录下,执行 docker-compose up,上传更新

  2. Docker界面中找到前面创建的容器mongodb,点击CLI

    截屏2021-01-29 下午5.43.40.png
    点击CLI后会打开新的终端进行连接
    截屏2021-01-29 下午5.48.16.png
    在终端中输入 mongo,进入 mongodb,依次执行如下命令:
    截屏2021-01-29 下午5.50.24.png
// 显示所有数据库
> show dbs
// 切换到 `test` 数据库
> use test
// 插入测试数据
> db.persons.insertMany([{name:'lee', gender:'male', age:20},{name:'lin', gender:'female', age: 21}])
// 查看插入后的数据
> db.persons.find().pretty()
  1. 在浏览器中打开:http://localhost:3000,这时访问的是Docker里的环境,页面显示如下,说明环境搭建成功
    截屏2021-01-29 下午5.55.36.png

相关文章

网友评论

      本文标题:Docker+nodejs+mongodb环境搭建

      本文链接:https://www.haomeiwen.com/subject/gzkqtltx.html