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],我们会很快的为您处理。