久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Windows下如何用Docker部署Node.js開發環境

200次閱讀
沒有評論

共計 3957 個字符,預計需要花費 10 分鐘才能閱讀完成。

這篇文章主要介紹了 Windows 下如何用 Docker 部署 Node.js 開發環境的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇 Windows 下如何用 Docker 部署 Node.js 開發環境文章都會有所收獲,下面我們一起來看看吧。

先明確一下我們希望實現的效果:

1、依然在 windows 下編輯源代碼,在 docker 容器中運行代碼,最后在 windows 的瀏覽器中看到運行結果,方便后續 debug。

2、可以將我開發完成的程序和運行環境一起打包制作成 docker 的 image,移交 image 給小伙伴運行或者直接發布到服務器上。

安裝與啟動

docker 引擎核心是運行在 linux 操作系統上的 linux 容器。所以要在 windows 上使用 docker 容器,先要提供 linux 運行環境。

去 docker 官網下載 msi 安裝程序,若你的系統版本(例如 64bit windows 10 pro, enterprise and education)支持 hyper- v 虛擬技術,那么不需要使用額外的虛擬機(virtualbox),安裝程序會自動為你安裝完成 docker(docker for windows)。

若不能使用 hyper- v 虛擬技術,docker 項目組也提供了 docker toolbox 工具,可以很方便的在 windows 環境下安裝 docker。

本文中的執行系統為 win7,故使用 docker toolbox。

安裝過程會附帶安裝 oracle vm virtualbox 虛擬機,如下圖:

kitematic 為 docker 的 gui 管理工具,打開 docker terminal 可以快速地啟動 docker。

可以發現此時 docker 給 default machine 分配了一個 ip:192.168.99.100。我們可以直接在該終端下執行 docker 命令。

由于在 windows 中運行 docker 多加了一層虛擬機,有幾個概念需要了解:

docker 主機指的是 linux 虛擬機,也就是說,此時 docker 主機(即 linux 虛擬機)的 ip 地址為 192.168.99.100。

與一般的 ssh 訪問虛擬機一樣,我們也可以通過該 ip 用 ssh 登錄到 docker 主機去執行命令。(用戶名:docker;密碼:tcuser)

如要用 root 權限去執行 linux 命令(如 mount),則需要打開 virtualbox。

搭建 image

新安裝好的 docker 主機中沒有任何 image(docker images 查看已有的 image)。運行 node 應用需要搭建 node 環境鏡像,可以從 docker hub 上 pull 輕量級的 linux 鏡像作為基礎鏡像(如 centos), 在上面手動安裝 node;也可以直接 pull 一個已安裝了 node 的鏡像 (docker pull 拉取鏡像)。從 docker hub 下載鏡像可能非常慢,可以借助國內的云服務商下載(如)。

現在假設我們 pull 了一個不包含 node 環境的 centos 鏡像。

$ docker run -it centos bash

啟動一個容器,并進入容器的 bash 進行交互式操作。采用與 centos 下一樣的方式安裝 node。安裝完成后 exit 退出容器。請放心,如果不使用 docker rm 或者 docker run 時不增加 –rm 參數,即使退出容器,容器本身及其中的修改不會消失。可以用 docker ps - a 查看所有容器,docker ps 查看正在運行的容器。

$ docker commit  container_id   image

提交之前修改的容器到新的 image。該鏡像就是已經安裝了 node 環境的鏡像(命名為 nodejs)。

在后續的開發中我們可以用 docker run -it nodejs bash 啟動容器。

在 windows 和虛擬機之間共享文件

我們現在需要在 docker 容器中運行源代碼,而 docker 容器是在 docker 主機中的,所以首先,我們需要先保證 docker 主機(即 linux 虛擬機)能訪問到 windows 中的源代碼文件。

打開 virtualbox,點擊“設置”-“共享文件夾”,指定路徑和名稱后勾選“自動掛載”和“固定分配”。“自動掛載”可以使得虛擬機下次啟動時自動掛載文件夾,否則每次啟動都需要重新手動掛載。

 

如果順利,重啟虛擬機輸入 mount 命令,可以看到共享文件夾掛載到了哪里,進入該目錄就能看到與 windows 下同步的文件。

 

如果自動掛載遇到問題,取消這個選項,使用以下命令手動掛載:

mount -t vboxsf docker_share  mount_point

在 docker 容器中運行 node 代碼

首先在 windows 的共享文件夾下編輯測試代碼 app.js:

var http = require( http 
 http.createserver(function (req, res) {
 res.writehead(200, { content-type :  text/plain 
 res.end( hello world\n 
 }).listen(1337); 
console.log(server running at http://0.0.0.0:1337/

可以在 docker 主機中看到該文件。

用 nodejs 鏡像啟動一個容器,我們希望這個容器能訪問 docker 主機中的文件作為源代碼,還希望能在 windows 下訪問運行后的執行端口查看結果。用以下命令啟動容器:

$ docker run -v /docker_share:/app -p 1337:1337 -it nodejs bash

-v 主機目錄: 容器數據卷目錄 使得主機目錄被掛載到容器中,可被容器訪問。

-p 主機端口: 容器端口使得容器端口被映射到主機上,可以被容器外部訪問到。

注:重復多個 - p 命令可以映射多個端口。

(docker 0.11 版本以上可以使用 –net=host 參數使得容器中的所有端口映射在 docker 主機上。故也可使用:)

$ docker run -v /docker_share:/app --net=host -it nodejs bash

進入容器中對應的數據卷目錄,執行 node app.js

 

windows 下通過瀏覽器訪問 192.168.99.100:1337 可看到結果

 

至此,基本的 node 應用已經能在 docker 下跑起來啦~

進一步的開發工作

1. npm install

一般在 node 工程中都會存在 node_modules 依賴需要用 npm install 安裝。在 docker 下,期望運行應用的容器中,同樣可以執行該命令。但注意增加 –no-bin-links 指令來避免創建軟連接。

npm install --no-bin-links

2. 關聯其他服務與容器互聯

許多 node 應用都會關聯啟用 redis、mysql 等服務。直接地,我們可以像在 windows 下一樣打開同一個容器的多個終端分別運行服務或執行代碼。用以下命令進入一個正在運行的容器:

$ docker exec -it  container  bash

更優雅地,我們將不同的服務運行在不同的容器上,然后使用 –link name:alias 容器互聯的方式將他們關聯起來。

3. 實時響應代碼變化

在開發過程中,如果每次修改代碼都需要結束 node 進程然后重啟必然會很麻煩。可以使用工具實現監控代碼變化并自動重啟進程的效果,這樣一來只需要在瀏覽器下刷新就可以看到新的運行效果。

安裝 nodemon:

npm install -g nodemon

依然以 app.js 為例,在容器中運行 app.js 時使用命令:

nodemon -l app.js

注:如果不在容器下運行,使用 nodemon app.js 即可,而在容器中,需要使用 - l 或 –legacy-watch 參數打開 chokidar 輪詢,才能監聽到掛載目錄中文件的改變。

Windows 下如何用 Docker 部署 Node.js 開發環境

  嘗試更改 app.js 內容,保存后可以發現 nodemon 自動重啟了:

Windows 下如何用 Docker 部署 Node.js 開發環境 

刷新瀏覽器看到修改后的結果:

Windows 下如何用 Docker 部署 Node.js 開發環境 

打包源碼和環境為 image

在工程目錄下編輯 dockerfile 和.dockerignore 文件。dockerfile:

from nodejs
# create app directory
run mkdir -p /usr/src/app
workdir /usr/src/app
# install app dependencies
copy package.json /usr/src/app/
run npm install
# bundle app source
copy . /usr/src/app
expose 8080
cmd [  npm ,  start  ]

from 指定基礎鏡像,接下來列出基于基礎鏡像需要做的操作命令,搭建起新的 image 環境(包括復制源碼和執行 npm install)可以參考。

.dockerignore:

node_modules
npm-debug.log

在 build 新鏡像時忽略其中的文件。

在 docker 主機中的工程目錄下(dockerfile 所在目錄)使用命令:

$ docker build -t  imagename  . // 注意末尾的點不可省去 

可得到自行 build 的鏡像。該鏡像會自動添加到你的 docker 主機下,你可以直接啟動新鏡像的容器運行代碼(鏡像內就包含代碼,所以無需重復掛載到數據卷,不過就不能在 windows 下修改了),也可以將鏡像分享給小伙伴。

關于“Windows 下如何用 Docker 部署 Node.js 開發環境”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Windows 下如何用 Docker 部署 Node.js 開發環境”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計3957字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 岳阳市| 兴山县| 永仁县| 修文县| 礼泉县| 福贡县| 上蔡县| 闽清县| 兰坪| 雷州市| 乡宁县| 贡嘎县| 邹平县| 疏勒县| 根河市| 湖南省| 广汉市| 新和县| 高清| 新巴尔虎左旗| 大厂| 三河市| 仙居县| 洛阳市| 天长市| 南陵县| 沈阳市| 台中市| 灵山县| 鹤山市| 上饶市| 平阳县| 昌吉市| 黔江区| 岳西县| 会泽县| 临江市| 信丰县| 西畴县| 新晃| 桓台县|