本文主要参考了docker入门nodejs+mongodb以及Nodejs 应用简单的访问Mongodb 部署至Docker,将其运用到Win10中。
觉得有帮助的话可以⭐Star 一下我的repo,或者来我的个站 Spot 玩 不定期更新内容与应用喔。。。
首先在本机要安装mongodb具体教程可参考mongodb菜鸟教程,以及Docker for windows。
创建要发布的node应用的镜像
比如下图1所示为要发布的node应用, 在其根目录下创建Dockfile配置文件。
别忘了创建镜像前先检查package.json的依赖是完整的,即可以在主机上正常地 npm install && npm start t运行项目
图1 node 应用根目录
FROM node
RUN mkdir /app
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE 8080
CMD [ "npm","start" ]
然后在根目录下用命令行运行以下命令,运行过程中会自动安装最新的node镜像,创建的镜像名为spot
docker build -t spot .
检查一下是否成功创建了image
docker images
>>REPOSITORY TAG IMAGE ID CREATED SIZE
spot latest 5d8bb30ba0fa 4 hours ago 687MB <---------- here
node latest 932354abf0cc 6 days ago 674MB
python 2.7-slim b16fde09c92c 3 months ago 139MB
docker4w/nsenter-dockerd latest cae870735e91 8 months ago 187kB
配置Mongodb的Docker容器
首先下载mongo镜像
docker pull mongo
然后将下载好的镜像,放入容器中运行,并将实体机端口与容器端口进行关联,[[path in host]] 为实体机上mongo数据库储存路径
docker run --name mongo -v [[path in host]]:/data/db -d -p 27017:27017 mongo
检查mongo容器是否正常运行
docker ps
>>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f8ee9aaf6cd3 mongo "docker-entrypoint.s…" 4 hours ago Up 4 hours 0.0.0.0:27017->27017/tcp mongo
使用link的方式 运行node容器
这里要注意运行时的参数,在箭头处的参数要与node.js应用中访问mongodb的ip地址别名相同.
docker run -d -p 8888:8080 --name spot --link mongo:mongodb (<----[[这是在node中连接mongo的url的地址别名 如mongodb://mongodb<----:27017]]) spot
docker ps
>>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0a114b84333 spot "npm start" 4 hours ago Up 4 hours 0.0.0.0:8888->8080/tcp spot
f8ee9aaf6cd3 mongo "docker-entrypoint.s…" 4 hours ago Up 4 hours 0.0.0.0:27017->27017/tcp mongo
运行后检查容器是否正常工作,打开主机8888端口就可以访问 容器的8080端口了.