Docker配置NodeJS+MongoDB

文章目录

[隐藏]

  • 需求
  • 思路
  • 前期准备
  • 拉取镜像
  • 构建Web镜像
  • 验证容器

需求

在Docker中运行一个Nodejs项目,连接Mongo数据库进行数据操作,并启动RockMongo容器。

思路
  • 使用容器连接(link)方法,Mongo容器与WebApp容器连接
  • 数据库连接语句要通过容器别名构建!!!
  • 宿主机只需监听Web端口即可
  • Rockmongo用于图形化界面管理数据库
前期准备

服务器上已有nodejs环境并可运行,根目录在/usr/local/node
项目中的数据库连接语句改成数据库容器别名,实例化Mongo容器时–name casebasedb,mongoose连接语句改为

var store = new SessionStore({url: 'mongodb://containerdb/session',interval: 1440});  mongoose.connect('mongodb://containerdb:27017/casebasedb', {useMongoClient: true,});  
拉取镜像
$ sudo docker pull node  $ sudo docker pull mongo  $ sudo docker pull pataquets/rockmongo  
构建Web镜像

编写Dockerfile

$ vim /***/Dockerfile  

Dockerfile内容

FROM node:latest # 基于node镜像  COPY . /***/casebase # 项目源文件目录  COPY . /usr/local/node # 直接拖进去的node环境  WORKDIR /***/casebase # nodejs运行目录  RUN npm install # 重新安装下依赖包  EXPOSE 8001 # 暴露端口8001  CMD ["node", "app.js"] # 执行命令  

根据Dockerfile新建镜像,命令结尾的 . 是指示Dockerfile文件在当前目录下

$ sudo docker build -t hugh/casebase .  

实例化容器

  • -p映射到当前8001端口;
  • –link语句连接数据库 [数据库容器名]:[容器别名]
  • 当连接成功后在web容器中可以直接ping到[容器别名containerdb]作为主机标识,所以一定要将数据库连接语句中的主机改成[容器别名]!!!
$ sudo docker run -d --name casebasedb mongo  $ sudo docker run --name casebaseapp -d -p 8001:8001 --link casebasedb:containerdb hugh/casebase  $ sudo docker run --name rockapp -d -p 8003:80 --link casebasedb:containerdb pataquets/rockmongo  
验证容器

查看容器情况

$ sudo docker ps -a  CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES  4e2ab928a683        dh/casebase:17.09.16.1   "node app.js"            14 minutes ago      Up 14 minutes       0.0.0.0:8001->8001/tcp   casebaseapp  66e6ba5f5873        mongo                    "docker-entrypoint..."   17 minutes ago      Up 17 minutes       27017/tcp                casebasedb  

查看端口监听情况

$ sudo netstat -lntp  Active Internet connections (only servers)  Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  tcp6       0      0 :::8001                 :::*                    LISTEN      32211/docker-proxy  

访问宿主机ip:8001,此时已可以访问web项目了。

原文出处:webmad -> http://blog.webmad.net/2017/10/14/Docker%E9%85%8D%E7%BD%AENodeJS+MongoDB/

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。