[手把手系列之]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
RUN chmod -R 777 /home/project
COPY . /home/project
RUN npm install
EXPOSE 3000
ENTRYPOINT ["npm", "run"]
CMD ["start"]
安装docker
请参考 https://www.runoob.com/docker/macos-docker-install.html
docker打包node项目为镜像
在项目根目录下
docker build -t node .
docker跑mongo容器
docker拉mongo镜像
docker pull mongo
docker起mongo容器
docker run -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服务地址
本篇文章由一文多发平台ArtiPub自动发布