今天看啥  ›  专栏  ›  aoping

docker 部署node+mongodb项目

aoping  · 掘金  ·  · 2019-10-29 06:46
阅读 90

docker 部署node+mongodb项目

写一个简单的node项目

项目地址

目录结构如下:

其中app.js如下:

// app.js

const express = require('express')
var mongoose = require('mongoose');

const app = express()
mongoose.connect('mongodb://mongodb/test');


var kittySchema = mongoose.Schema({
  name: String
});

kittySchema.methods.speak = function () {
  var greeting = this.name
    ? "Meow name is " + this.name
    : "I don't have a name";
  console.log(greeting);
}

var Kitten = mongoose.model('Kitten', kittySchema);

app.get('/create', (req, res) => {
  var fluffy = new Kitten({ name: 'fluffy' });

  fluffy.save(function (err, fluffy) {
    if (err) return console.error(err);
    fluffy.speak();
  });
  res.send(fluffy.speak())
})

app.get('/', (req, res) => {
  Kitten.find(function (err, kittens) {
    if (err) return console.error(err);
    res.send(kittens)
  })
  // res.send('hello aa')
})

app.listen(3000, console.log('Example app listening on port 3000!'))


复制代码

写Dockerfile

FROM node:latest

RUN mkdir -p /home/project
WORKDIR /home/project

COPY . /home/project

RUN npm install --registry=https://registry.npm.taobao.org

EXPOSE 3000

ENTRYPOINT ["npm", "run"]
CMD ["start"]

复制代码

docker打包node项目为镜像

在项目根目录下

docker build -t node .
复制代码

docker跑mongo容器

docker拉mongo镜像

docker pull mongo
复制代码

docker起mongo容器

docker run --name mongo -p 27017:27017 -v $PWD/db:/data/db -d --name mongodb mongo:latest
复制代码

docker跑node项目

docker run -d --name nodeapp --link=mongodb:mongodb -p 3000:3000 node
复制代码

注意:

  • mongodb:mongodb 前一个mongodb是mongo容器名称 后一个mongodb是我们在app.js里mongodb服务地址



原文地址:访问原文地址
快照地址: 访问文章快照