[TOC]
應(yīng)用場(chǎng)景
1、使用webpack 打包后,測(cè)試html靜態(tài)界面。
2、實(shí)現(xiàn)前后端分離,單獨(dú)部署,
3、此環(huán)境實(shí)現(xiàn)打包后的dist內(nèi)容是否正確。
準(zhǔn)備工作
1、docker 安裝
。。。略過(guò)
2 Dockerfile編寫
因?yàn)槭鞘褂脀ebpack 對(duì)前端頁(yè)面進(jìn)行的打包操作 ,我們選擇一個(gè)nodejs相關(guān)的鏡像進(jìn)行編譯我們自己的docker鏡像
node鏡像,官方版本,地址
Dockerfile 編寫
進(jìn)入到dist目錄
創(chuàng)建Dockerfile文件。
內(nèi)容如下
FROM node
# Copy application dist.
COPY . /dist/
# Install http-server 服務(wù)
RUN npm install -g http-server
-
對(duì)Dockerfile內(nèi)容說(shuō)明
1、
FROM node:是表示從官方的node鏡像作為基礎(chǔ)鏡像編譯2、
Copy . /dist/: 編譯的時(shí)候,復(fù)制當(dāng)前目錄所有文件到 鏡像中 鏡像的/dist目錄下。3、
RUN npm install -g http-server:安裝http-server ,這是關(guān)鍵。后面會(huì)用到。
編譯鏡像
- 打開終端,進(jìn)入dist目錄,確保Dockerfile文件的存在。

- 使用docker命令 開始編譯鏡像
docker build -t camchin1/member:beta_v1.1 .
說(shuō)明
1、-t 編譯參數(shù)
2、camchin1/member : 編譯鏡像名稱
3、beta_v1.1 : 編譯鏡像的版本號(hào),一般稱為標(biāo)記TAG
4、 最后的一個(gè) . 千萬(wàn)別忘了。
- 按入enter鍵之后出現(xiàn)如下內(nèi)容

表示編譯成功。
運(yùn)行鏡像
到此,我們的node鏡像就已經(jīng)編譯成功,接下來(lái)就要看看, 是否可以使用。
1、終端 運(yùn)行 docker images 顯示我們的鏡像 。

2、接下來(lái)運(yùn)行鏡像
docker run -p 8080:8080 -t -d ffab2808481c http-server /dist
說(shuō)明:
1、-p 8080:8080 : 映射本地端口8080,到docker端口8080 。
2、-t :參見 附錄- docker run OPTIONS參數(shù)表
3、-d :參見 附錄- docker run OPTIONS參數(shù)表
4、 ffab2808481c : 鏡像id, 如圖中所示 IMAGE ID ,也可以使用, 鏡像名:TAG
即:
docker run -p 8080:8080 -t -d camchin1/member:beta_v1.1 http-server /dist
5、http-server /dist : 啟動(dòng)http服務(wù)指定目錄到/dist ,就是我們的靜態(tài)網(wǎng)頁(yè)的目錄了。
http-server 參數(shù)說(shuō)明 : 參見 附錄-
3、然后打開瀏覽器輸入 : http://localhost:8080:
就可以看到你的網(wǎng)站了。
All Done?。?!
附錄
docker run OPTIONS參數(shù)表
OPTIONS說(shuō)明:
-a stdin: 指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類型,可選 STDIN/STDOUT/STDERR 三項(xiàng);
-d: 后臺(tái)運(yùn)行容器,并返回容器ID;
-i: 以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用;
-t: 為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用;
--name="nginx-lb": 為容器指定一個(gè)名稱;
--dns 8.8.8.8: 指定容器使用的DNS服務(wù)器,默認(rèn)和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默認(rèn)和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 設(shè)置環(huán)境變量;
--env-file=[]: 從指定文件讀入環(huán)境變量;
--cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運(yùn)行;
-m :設(shè)置容器使用內(nèi)存最大值;
--net="bridge": 指定容器的網(wǎng)絡(luò)連接類型,支持 bridge/host/none/container: 四種類型;
--link=[]: 添加鏈接到另一個(gè)容器;
--expose=[]: 開放一個(gè)端口或一組端口;</pre>
http-server 參數(shù)說(shuō)明
可用選項(xiàng):
p 要使用的端口(默認(rèn)為8080 )
a 要使用的地址(默認(rèn)為0.0.0.0 )
-d 顯示目錄列表(默認(rèn)為“True”
- i 顯示autolndex (默認(rèn)為"True”)
-g或--gzip當(dāng)啟用(默認(rèn)為“False”)時(shí),它將./public/some-file.js.gz代替./public/some-file.jsgzip文件版本的存在,并且請(qǐng)求接受gzip編碼。
-e或--ext默認(rèn)文件擴(kuò)展名(如果沒(méi)有提供) (默認(rèn)為'html' )
- S或--silent從輸出中抑制日志消息
--cors通過(guò)Access-Control-Allow-0rigin標(biāo)題啟用CORS
- O 啟動(dòng)服務(wù)器后打開瀏覽器窗口
- C設(shè)置緩存控制最大年齡標(biāo)頭的緩存時(shí)間(以秒為單位),例如-C10為10秒(默認(rèn)為“3600”)。要
禁用緩存,請(qǐng)使用-C-1。
-U或--utc在日志消息中使用UTC時(shí)間格式。
- P或-- proxy代理不能在本地解析給定ur的所有請(qǐng)求。例如:-P http://someurl.com
-S或--SS1啟用https。
-C或--certssl證書文件的路徑( 默認(rèn): cert.pem)。
-K或-- keyssl密鑰文件的路徑( 默認(rèn)值: key.pem)。
-r或--robots提供/robots.bxt (其內(nèi)容默認(rèn)為'User-agent:* \nDisallow: I' )
-h或--help打印此列表并退出。
參考
利用http-server測(cè)試vue-cli打包后的項(xiàng)目
20180427優(yōu)化Dockerfile
Dockerfile 內(nèi)容如下
不再使用官方node鏡像作為基礎(chǔ)鏡像,體積太大,600M+,
使用tatsushid/tinycore-node ,生成鏡像80M+,體積大大減小,提高部署效率
FROM tatsushid/tinycore-node
# Copy application code.
COPY . /dist/
# Install dependencies.
RUN npm install -g http-server
# 工作目錄
WORKDIR /dist/
# 工作目錄 執(zhí)行的命令
CMD ["http-server"]
那么 現(xiàn)在執(zhí)行啟動(dòng)鏡像只需:
docker run -p 8081:8080 -t -d image-id