前言
之前作者對于Docker是個什么東西完全是個零的概念蜒秤,但因作者近期所做的項目需要用到Docker來部署應(yīng)用(說白了就是不得不學(xué))弟孟,所以折騰了一天贝咙,在網(wǎng)上也查找了很多資料,最后終于成功地把自己的nodejs應(yīng)用部署到Docker上(Windows環(huán)境)拂募,所以寫下這篇文章跟大家分享庭猩,希望對您有所幫助!
一陈症、下載 Docker Toolbox
點擊下載鏈接蔼水,下載Windows版本的安裝文件,下載完成后雙擊該文件录肯,一路默認(rèn)Next點下去即可徙缴。注意:中途如提示您安裝其它的程序,全部選擇安裝即可嘁信。如360軟件提示您阻止軟件安裝于样,則您需要選擇允許軟件安裝。
安裝成功后您的桌面上會出現(xiàn)這幾個程序圖標(biāo)潘靖,他們分別是 Docker Quickstart Terminal
(Docker的終端)穿剖,Kitematic(Alpha)
(Docker的GUI管理工具),Oracle VM VirtualBox
(虛擬機)
二卦溢、使用 Docker
雙擊啟動 Docker Quickstart Terminal
糊余,稍作等待,你會看到這樣的界面:
現(xiàn)在就可以使用docker了单寂,你可以輸入一些命令:
docker info // 目前docker環(huán)境的相關(guān)信息
docker version // docker的版本信息
三贬芥、使用 Xshell5 連接 Docker
因為docker終端的體驗性很差,平時在使用的時候會有些不方便宣决,所以我們可以用Xshell5連接docker服務(wù)器蘸劈,我們使用 SSH
協(xié)議進行連接,主機的ip地址填寫 192.168.99.100
尊沸,它是docker安裝后的默認(rèn)ip地址威沫,賬號:docker
,密碼:tcuser
洼专,連接成功后就可以用Xshell5運行docker命令了棒掠。
四、用 docker 部署 node.js 應(yīng)用
首先我們需要下載安裝 node.js
環(huán)境的鏡像屁商,因為下載docker的國外鏡像比較慢烟很,所以作者選擇了國內(nèi)的鏡像源 DaoCloud
(你也可以選擇其他的國內(nèi)鏡像,如阿里,163等)雾袱,執(zhí)行下面的命令:
docker pull daocloud.io/library/node
安裝鏡像成功后恤筛,我們就可以構(gòu)建自己的nodejs項目的鏡像了,首先谜酒,cd
到項目的根目錄,根據(jù)您自己的需求構(gòu)建好 package.json
妻枕,執(zhí)行 vi package.json
{
"name": "nodetest",
"version": "1.0.0",
"description": "nothing",
"main": "main.js",
"scripts": {
"start": "node main.js"
},
"keywords": [
"..."
],
"author": "leechee",
"license": "ISC",
"dependencies": {
"koa": "^1.2.4",
}
}
創(chuàng)建 Dockerfile
僻族,執(zhí)行 vi Dockerfile
FROM daocloud.io/library/node
# Create app directory
RUN mkdir -p /home/Service
WORKDIR /home/Service
# Bundle app source
COPY . /home/Service
RUN npm install
EXPOSE 8888
CMD [ "npm", "start" ]
-
FROM
表示鏡像的地址 -
RUN
表示執(zhí)行后面的命令 -
WORKDIR
指定工作目錄 -
COPY
復(fù)制 -
EXPOSE
向外暴露端口 -
CMD
運行命令
最后編寫項目入口程序 main.js
,執(zhí)行 vi main.js
// 一個簡單的web server
var koa = require('koa');
var app = koa();
app.use(function *() {
this.body = 'hello world!';
});
app.listen(8888, function () {
console.log('server is running on 8888');
});
準(zhǔn)備工作完畢后屡谐,執(zhí)行下面的命令述么,構(gòu)建應(yīng)用程序鏡像
docker build -t mynodeapp .
最后一步适贸,在 docker 容器中運行我們的應(yīng)用
// 先查看我們創(chuàng)建的鏡像的 IMAGE ID司恳,它是 6d06d88bda4b
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynodeapp latest 6d06d88bda4b 1 days ago 791MB
daocloud.io/library/node latest 60bea5b86079 3 weeks ago 673MB
hello-world latest 1815c82652c0 3 months ago 1.84kB
// 根據(jù)查到的 IMAGE ID 值,運行下面的命令
$ docker run -d -p 8888:8888 6d06d88bda4b
// 上面的命令沒有報錯的話喝峦,說明應(yīng)用程序成功運行
$ docker ps // 查看正在運行的容器
$ curl -i localhost:8888 // 測試
最后饵撑,還可以使用 Kitematic (Alpha)
來管理 Docker 的應(yīng)用剑梳,比如使用 DockerHub
上的鏡像,也可以管理自己的鏡像滑潘。
簡書作者 小菜荔枝 轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)