Win10部署Docker + mongodb + node.js環(huán)境

本文主要參考了docker入門nodejs+mongodb以及Nodejs 應(yīng)用簡單的訪問Mongodb 部署至Docker,將其運(yùn)用到Win10中。

覺得有幫助的話可以?Star 一下我的repo,或者來我的個(gè)站?Spot?玩 不定期更新內(nèi)容與應(yīng)用喔。。。

首先在本機(jī)要安裝mongodb具體教程可參考mongodb菜鳥教程,以及Docker for windows。

創(chuàng)建要發(fā)布的node應(yīng)用的鏡像

比如下圖1所示為要發(fā)布的node應(yīng)用, 在其根目錄下創(chuàng)建Dockfile配置文件。

別忘了創(chuàng)建鏡像前先檢查package.json的依賴是完整的,即可以在主機(jī)上正常地 npm install && npm start t運(yùn)行項(xiàng)目

????????????????????????????????????????????????????????????????????????????????????圖1 node 應(yīng)用根目錄

FROM node

RUN mkdir /app

WORKDIR /app

COPY . /app

RUN npm install

EXPOSE 8080

CMD [ "npm","start" ]

然后在根目錄下用命令行運(yùn)行以下命令,運(yùn)行過程中會(huì)自動(dòng)安裝最新的node鏡像,創(chuàng)建的鏡像名為spot

docker build -t spot .

檢查一下是否成功創(chuàng)建了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

然后將下載好的鏡像,放入容器中運(yùn)行,并將實(shí)體機(jī)端口與容器端口進(jìn)行關(guān)聯(lián),[[path in host]] 為實(shí)體機(jī)上mongo數(shù)據(jù)庫儲(chǔ)存路徑

docker run --name mongo -v [[path in host]]:/data/db? -d -p 27017:27017 mongo

檢查mongo容器是否正常運(yùn)行

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的方式 運(yùn)行node容器

這里要注意運(yùn)行時(shí)的參數(shù),在箭頭處的參數(shù)要與node.js應(yīng)用中訪問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

運(yùn)行后檢查容器是否正常工作,打開主機(jī)8888端口就可以訪問 容器的8080端口了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 上一篇大概介紹了JWT的用法,實(shí)現(xiàn)了一個(gè)簡單的登錄注冊以及郵箱驗(yàn)證。而這一篇呢就負(fù)責(zé)把我們的項(xiàng)目部署到自己的服務(wù)器...
    sidiWang閱讀 10,418評論 2 48
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應(yīng)用容器引擎,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)。可...
    sessionboy閱讀 3,884評論 2 49
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,038評論 2 89
  • 騎白馬呼嘯而過的詩人 是一位英俊的少年,亦或是娉婷的姝麗 那白馬以夢為翅,過隙只在一瞬 我不曾看見絕美的容顏和綽約...
    鵬_541b閱讀 165評論 7 1
  • (一) "來,我們拍張照吧。”小徐手里拿著單反,有點(diǎn)羞澀地說。 “不要!”孫倩干脆利落地拒絕,她一邊拿太陽帽扇著風(fēng)...
    小韓96閱讀 472評論 0 3