成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

嘗試 Docker + Nginx 部署單頁應(yīng)用

sf190404 / 846人閱讀

摘要:開發(fā)到部署,親力親為當(dāng)我們開發(fā)一個單頁面應(yīng)用時,執(zhí)行完構(gòu)建后會生成一個在目錄,那怎么把這個部署到服務(wù)器上呢目錄結(jié)構(gòu)前端構(gòu)建完的靜態(tài)文件鏡像所需的配置文件配置挑幾點(diǎn)配置講講,先是壓縮資源,以節(jié)省帶寬和提高瀏覽器加載速度雖然已經(jīng)支持在構(gòu)建時就生

開發(fā)到部署,親力親為

當(dāng)我們開發(fā)一個單頁面應(yīng)用時,執(zhí)行完構(gòu)建后

npm run build

會生成一個 index.html 在 dist 目錄,那怎么把這個 index.html 部署到服務(wù)器上呢?

目錄結(jié)構(gòu)

dist/:前端構(gòu)建完的靜態(tài)文件

docker/:鏡像所需的配置文件

配置 Nginx

挑幾點(diǎn)配置講講,先是 Gzip 壓縮資源,以節(jié)省帶寬和提高瀏覽器加載速度

雖然 Webpack 已經(jīng)支持在構(gòu)建時就生成 .gz 壓縮包,但也可以通過 Nginx 來啟用
gzip on;
gzip_disable "msie6";
# 0-9 等級,級別越高,壓縮包越小,但對服務(wù)器性能要求也高
gzip_comp_level 9;
gzip_min_length 100;
# Gzip 不支持壓縮圖片,我們只需要壓縮前端資源
gzip_types text/css application/javascript;

再就是服務(wù)端口的配置,將 API 反向代理到后端服務(wù)

server {
  listen 8080;
  server_name www.frontend.com;

  root /usr/share/nginx/html/;

  location / {
    index index.html index.htm;
    try_files $uri $uri/ /index.html;
    # 禁止緩存 HTML,以保證引用最新的 CSS 和 JS 資源
    expires -1;
  }

  location /api/v1 {
    proxy_pass http://backend.com;
  }
}

完整配置長這樣

worker_processes 1;

events { worker_connections 1024; }

http {
  ##
  # Basic Settings
  ##

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 65;
  types_hash_max_size 2048;

  include /etc/nginx/mime.types;
  default_type application/octet-stream;

  ##
  # Logging Settings
  ##

  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

  ##
  # Gzip Settings
  ##

  gzip on;
  gzip_disable "msie6";
  gzip_comp_level 9;
  gzip_min_length 100;
  gzip_types text/css application/javascript;

  server {
    listen 8080;
    server_name www.frontend.com;

    root /usr/share/nginx/html/;

    location / {
      index index.html index.htm;
      try_files $uri $uri/ /index.html;
      expires -1;
    }

    location /api/v1 {
      proxy_pass http://backend.com;
    }
  }
}
配置 Docker

這里簡單一點(diǎn),基于基礎(chǔ)鏡像,拷貝我們寫好的 nginx.conf 和 index.html 到鏡像內(nèi)

FROM nginx:alpine

COPY nginx.conf /etc/nginx/nginx.conf
COPY dist /usr/share/nginx/html
編寫 Makefile

完成了上面的準(zhǔn)備,就可以編寫命令來執(zhí)行鏡像的打包了

先給鏡像取個名稱和端口號

APP_NAME = spa_nginx_docker
PORT = 8080

通過 build 來打包鏡像

build:
    cp docker/Dockerfile .
    cp docker/nginx.conf .
    docker build -t $(APP_NAME) .
    rm Dockerfile
    rm nginx.conf

通過 deploy 來啟動鏡像

deploy:
    docker run -d -it -p=$(PORT):$(PORT) --name="$(APP_NAME)" $(APP_NAME)

最后還有個 stop 來停止和清理鏡像

stop:
    docker stop $(APP_NAME)
    docker rm $(APP_NAME)
    docker rmi $(APP_NAME)

完整配置長這樣

APP_NAME = spa_nginx_docker
PORT = 8080

build:
    cp docker/Dockerfile .
    cp docker/nginx.conf .
    docker build -t $(APP_NAME) .
    rm Dockerfile
    rm nginx.conf

deploy:
    docker run -d -it -p=$(PORT):$(PORT) --name="$(APP_NAME)" $(APP_NAME)

stop:
    docker stop $(APP_NAME)
    docker rm $(APP_NAME)
    docker rmi $(APP_NAME)

完整命令長這樣

# 靜態(tài)資源構(gòu)建
npm run build

# 鏡像打包
make build

# 停止并刪除舊鏡像(首次可忽略)
make stop

# 鏡像啟動
make deploy
總結(jié)

目前的部署方法相對簡單,后續(xù)會加入基礎(chǔ)鏡像和鏡像倉庫的使用,先去前面探探路

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/27693.html

相關(guān)文章

  • 嘗試 Docker + Nginx 部署單頁應(yīng)用

    摘要:開發(fā)到部署,親力親為當(dāng)我們開發(fā)一個單頁面應(yīng)用時,執(zhí)行完構(gòu)建后會生成一個在目錄,那怎么把這個部署到服務(wù)器上呢目錄結(jié)構(gòu)前端構(gòu)建完的靜態(tài)文件鏡像所需的配置文件配置挑幾點(diǎn)配置講講,先是壓縮資源,以節(jié)省帶寬和提高瀏覽器加載速度雖然已經(jīng)支持在構(gòu)建時就生 開發(fā)到部署,親力親為 當(dāng)我們開發(fā)一個單頁面應(yīng)用時,執(zhí)行完構(gòu)建后 npm run build 會生成一個 index.html 在 dist 目錄,...

    leiyi 評論0 收藏0
  • 服務(wù)器從安裝到部署全過程(二)

    摘要:上一篇文章中大概嘗試安裝的一些過程以及在配置中出現(xiàn)的問題還有一些解決方式,那么在本次過程嘗試中,將進(jìn)一步進(jìn)行服務(wù)器的基礎(chǔ)配置,以及前端應(yīng)用部署經(jīng)過上次已經(jīng)安裝至服務(wù)器中了,在這里面主要介紹一下部署相關(guān)所需要的配置,例如監(jiān)聽端口服務(wù)轉(zhuǎn)發(fā)靜態(tài)資 OK! 上一篇文章中大概嘗試安裝mysql、nginx、nodeJs、pm2 的一些過程以及在配置中出現(xiàn)的問題還有一些解決方式,那么在本次過程嘗...

    Stardustsky 評論0 收藏0
  • 用vue從零開發(fā)和部署一款移動端pwa單頁應(yīng)用

    摘要:另外,單頁應(yīng)用因?yàn)閿?shù)據(jù)前置到了前端,不利于搜索引擎的抓取。所以我們需要對自己的單頁應(yīng)用進(jìn)行一些優(yōu)化。 前言 最近秋招之余空出時間來按自己的興趣動手做了一個項(xiàng)目,一個基于vue-cli3.0, vue,typescript的移動端pwa,現(xiàn)在趁熱打鐵,將這個項(xiàng)目從開發(fā)到部署整個過程記錄下來,并將從這個項(xiàng)目中學(xué)習(xí)到的東西分享出來,如果大家有什么意見或補(bǔ)充也可以在評論區(qū)提出。先介紹一下這個項(xiàng)...

    Channe 評論0 收藏0

發(fā)表評論

0條評論

sf190404

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<