您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Angular怎么編譯打包并使用Docker發布的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
環境:
Angular CLI: 11.0.6
Angular: 11.0.7
Node: 12.18.3
npm : 6.14.6
IDE: Visual Studio Code
當我們完成angular的開發后,如何部署到服務器呢?【相關教程推薦:《angular教程》】
2.1. 基本打包命令
基于Angular CLI生成的Angular項目,默認會有2個環境配置文件
└──myProject/src/environments/ └──environment.ts └──environment.prod.ts
environment.ts: 針對開發環境使用的環境文件
environment.prod.ts: 生產環境編譯時,將替換原有的environment.ts,然后再打包。 (根目錄下的angular.json定義了這個默認行為,有需要,可以進行修改)
AngularCLI剛剛生成2個文件后,如果打開比較2個文件的區別,可以看到開發環境使用的environment.ts文件中,有這么一句production: false
。因為,針對生產環境,angular在編譯時需要核心考慮效率等問題,而開發環境,要考慮方便開發者進行調試,側重點不同。
那么針對生產環境如何編譯呢?Angular CLI同樣提供了命令,
ng build --prod
其中,參數--prod
即告訴編譯環境,編譯為生產環境包。同樣,angular.json中定義了默認的編譯參數,如果需要,可以進行修改。主要配置參數如下
"configurations": { "production": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" } ], "optimization": true, "outputHashing": "all", "sourceMap": false, "extractCss": true, "namedChunks": false, "aot": false, "extractLicenses": true, "vendorChunk": false, "buildOptimizer": false, "budgets": [ { "type": "initial", "maximumWarning": "5mb", "maximumError": "10mb" } ] } }
Angular默認打包到根目錄下的dist
目錄下,生成的文件為純靜態文件(html, css, js),以及圖片文件。
2.2. 打包部署到二級目錄
有不少情況,我們的angular web站點不能直接部署到網站的根目錄下,需要部署到二級目錄下。 比如,不能部署到 http://abc.com下,要求部署到 http://abc.com/demo 這個二級目錄下。針對這種情況,就需要修改一下我們的編譯參數,修改為:
ng build --prod --deploy-url /demo/ --base-href /demo/
增加 --deploy-url
和 --base-href
。
使用場景:比如我們有多個站點,希望使用同一個反向代理,
http://site1
,http://site2
, 分別映射到http://abc.com/site1
,http://abc.com/site2/
。 那么為了方便配置,需要把site1, site2都部署到二級目錄,如http://site1/site1
,http://site2/site2
。 然后http://site1/site1
代理到http://abc.com/site1
,http://site2/site2
代理到http://abc.com/site2/
, 免得css、js因為目錄級別問題找不到。
Angular站點編譯打包后,可以方便的發布到已有web服務器,或者打成docker image, 然后發布。
3.1. web服務器發布
因為我們打包后,生成的文件為純靜態文件(html, css, js, 圖片等), 所以打包后的問題,可以直接copy到iis, nginx , apache tomcat等web服務器,或者node.js, java等可以顯示靜態文件的程序的目錄下即可。
3.2. 使用docker發布
如果部署到docker,我們可以基于一個基礎的nginx docker, 然后把編譯好的angular項目,copy到docker 內的nginx目錄下即可。
基本步驟:
準備Dockerfile 文件, docker可以基于nginx:alpine
, 將編譯好的angular 站點文件復制到 docker 的nginx默認目錄 /usr/share/nginx/html
FROM nginx:alpine COPY . /usr/share/nginx/html
說明: 1) 假設angular打包后的文件,與Dockerfile文件在同一個目錄
2) COPY . /usr/share/nginx/html, 兩個參數.
代表當前路徑,/usr/share/nginx/html
是docker中的目標目錄
編譯docker。 在Dockerfile目錄下,執行
docker build -t your-docker-name . docker save your-docker-name > your-docker-name.tar gzip your-docker-name.tar
三條命令分別為:
生成docker image, 名字(name)為your-docker-name
導出docker image為本地文件, 文件名為 your-docker-name.tar
壓縮docker image
可以看到,因為angular編譯后為純靜態文件,所以使用docker發布非常簡單。部署時,只需要復制docker文件到目標機器,解壓縮,然后執行 docker load < your-docker-name.tar
即可加載docker image到目標機器。
為生產環境編譯,一定要加參數--prod
如果要部署到二級目錄,編譯時加參數。如部署到/demo二級目錄下,加參數: --deploy-url /demo/ --base-href /demo/
使用docker發布,可以選擇基本的nginx docker, 然后將編譯好的angular文件copy到nginx目錄下即可。
感謝各位的閱讀!關于“Angular怎么編譯打包并使用Docker發布”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。