Docker : vue.js部署 、測(cè)試鏡像編譯生成

[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文件的存在。
image.png
  • 使用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)容
image.png

表示編譯成功。

運(yùn)行鏡像

到此,我們的node鏡像就已經(jīng)編譯成功,接下來(lái)就要看看, 是否可以使用。

1、終端 運(yùn)行 docker images 顯示我們的鏡像 。

image.png

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)目

Docker run 命令

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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,828評(píng)論 15 147
  • 0. 前言 docker是什么?docker是用GO語(yǔ)言開發(fā)的應(yīng)用容器引擎,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)???..
    sessionboy閱讀 3,993評(píng)論 2 49
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 兩天前小希和大家分享了《用容器定義 Java 虛擬化部署》,估計(jì)有些小伙伴早已按耐不住著急的心情了吧。今天希云就和...
    希云Docker容器管理平臺(tái)閱讀 1,358評(píng)論 1 2
  • 經(jīng)常性 興奮睡不著 焦慮睡不著 想睡睡不著 玩手機(jī)睡不著 想作死睡不著 可是睡覺(jué)太重要了。 打卡貼,一起來(lái)早睡
    不二琪琪閱讀 324評(píng)論 1 0

友情鏈接更多精彩內(nèi)容