本篇文章跟大家介紹一下Angular編譯打包&Docker發布的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
環境:
- Angular CLI: 11.0.6
- Angular: 11.0.7
- Node: 12.18.3
- npm : 6.14.6
- IDE: Visual Studio Code
##1. 摘要
當我們完成angular的開發後,如何部署到伺服器呢? 【相關教學推薦:《angular教學》】
2. 編譯打包
2.1. 基本打包指令
基於Angular CLI產生的Angular項目,預設會有2個環境設定檔└──myProject/src/environments/ └──environment.ts └──environment.prod.ts
- environment.ts: 針對開發環境所使用的環境檔案
- environment.prod.ts: 生產環境編譯時,會取代原有的environment.ts,然後再打包。 (根目錄下的angular.json定義了這個預設行為,有需要,可以進行修改)
production: false。因為,針對生產環境,angular在編譯時需要核心考慮效率等問題,而開發環境,要考慮方便開發者進行調試,重點不同。
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因為目錄層級問題找不到。
3. Angular網站的發布
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 即可載入docker image到目標機器。
4. 總結
為生產環境編譯,一定要加參數
--prod
#如果要部署到二級目錄,編譯時加參數。如部署到/demo二級目錄下,加參數:
--deploy-url /demo/ --base-href /demo/
使用docker發布,可以選擇基本的nginx docker, 然後將編譯好的angular檔copy到nginx目錄下即可。
更多程式相關知識,請造訪:程式設計影片! !
以上是淺談Angular如何編譯打包?如何使用Docker發布?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載
最受歡迎的的開源編輯器