国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

北京南昌企業(yè)網(wǎng)站制作創(chuàng)建網(wǎng)站需要什么條件

北京南昌企業(yè)網(wǎng)站制作,創(chuàng)建網(wǎng)站需要什么條件,wordpress設(shè)置文章固定標題,廣西住建局官方網(wǎng)站基礎(chǔ)構(gòu)建與多階段構(gòu)建對比 基礎(chǔ)構(gòu)建(單階段構(gòu)建) 在基礎(chǔ)構(gòu)建中,所有構(gòu)建過程和最終的應(yīng)用程序都在同一個鏡像中進行,構(gòu)建工具和最終應(yīng)用程序都會在最終鏡像中。 這樣構(gòu)建鏡像時會包含所有的構(gòu)建工具和依賴,因此最終鏡…

基礎(chǔ)構(gòu)建與多階段構(gòu)建對比

基礎(chǔ)構(gòu)建(單階段構(gòu)建)

在基礎(chǔ)構(gòu)建中,所有構(gòu)建過程和最終的應(yīng)用程序都在同一個鏡像中進行,構(gòu)建工具和最終應(yīng)用程序都會在最終鏡像中。
這樣構(gòu)建鏡像時會包含所有的構(gòu)建工具和依賴,因此最終鏡像可能會非常大。

示例:

FROM golang:1.18WORKDIR /app# 復制源代碼
COPY . .# 獲取依賴并編譯 Go 應(yīng)用
RUN go mod tidy && go build -o myapp .# 暴露應(yīng)用端口
EXPOSE 8080# 啟動應(yīng)用
CMD ["./myapp"]

缺點

  • 最終鏡像包含構(gòu)建工具和依賴,導致鏡像體積較大。
  • 構(gòu)建工具和中間文件也被打包在鏡像中,增加了潛在的安全風險。

多階段構(gòu)建

多階段構(gòu)建將構(gòu)建過程分為多個階段。構(gòu)建階段和運行階段使用不同的鏡像,最終只將構(gòu)建好的應(yīng)用和最小的運行時鏡像打包到最終鏡像中。

示例:

# 第一階段:編譯階段
FROM golang:1.18 AS builderWORKDIR /app# 復制源代碼
COPY . .# 獲取依賴并編譯 Go 應(yīng)用
RUN go mod tidy && go build -o myapp .# 第二階段:運行階段
FROM alpine:latestWORKDIR /root/# 從第一階段復制編譯好的二進制文件
COPY --from=builder /app/myapp .# 暴露應(yīng)用端口
EXPOSE 8080# 啟動應(yīng)用
CMD ["./myapp"]

優(yōu)點

  • 最終鏡像只有運行時需要的內(nèi)容,避免了構(gòu)建工具和臨時文件。
  • 可以選擇更小、更安全的鏡像(如 alpine),大大減小了鏡像體積。
  • 多階段構(gòu)建提高了鏡像的安全性,因為編譯工具僅用于構(gòu)建階段,運行時環(huán)境不需要這些工具。

基礎(chǔ)構(gòu)建與多階段構(gòu)建對比表格

特性基礎(chǔ)構(gòu)建多階段構(gòu)建
鏡像大小較大,包含構(gòu)建工具和中間文件較小,僅包含編譯后的二進制文件和最小運行環(huán)境
構(gòu)建工具構(gòu)建工具(如編譯器)與運行時文件一起打包到最終鏡像中構(gòu)建工具僅存在于構(gòu)建階段,最終鏡像不包含它們
安全性安全性較低,因為鏡像包含了編譯工具和其他不必要的內(nèi)容更安全,因為只包含運行應(yīng)用所需的最小環(huán)境
構(gòu)建速度較慢,因為構(gòu)建工具和源文件都要復制到最終鏡像中,可能導致鏡像冗余更快,構(gòu)建工具和源文件被分離,只將必要內(nèi)容復制到最終鏡像
適用場景小型項目或者簡單的應(yīng)用構(gòu)建,無需考慮鏡像體積和安全性復雜應(yīng)用,特別是需要減小鏡像體積、提高安全性的情況
復雜性較簡單,只需一個鏡像需要多個階段和 COPY --from 指令,構(gòu)建過程稍復雜

總結(jié)

  • 基礎(chǔ)構(gòu)建:適用于簡單應(yīng)用,鏡像較大,包含了不必要的構(gòu)建工具和依賴。
  • 多階段構(gòu)建:通過分階段構(gòu)建,最終鏡像更小,安全性更高,適合生產(chǎn)環(huán)境。
  • 多階段構(gòu)建 在生產(chǎn)環(huán)境中更常見,能夠有效優(yōu)化鏡像體積,提高安全性。

多階段構(gòu)建在企業(yè)級應(yīng)用中的常見案例

1. Go 應(yīng)用構(gòu)建和部署

在企業(yè)級 Go 應(yīng)用中,通常需要先構(gòu)建應(yīng)用,再將其部署到一個更小、更安全的基礎(chǔ)鏡像中。這種做法減少了不必要的構(gòu)建依賴,提高了鏡像的安全性和運行效率。

示例:

# 第一階段:構(gòu)建 Go 應(yīng)用
FROM golang:1.18 AS builderWORKDIR /app# 復制源代碼和依賴
COPY . .# 獲取依賴并編譯 Go 應(yīng)用
RUN go mod tidy && go build -o myapp .# 第二階段:運行 Go 應(yīng)用
FROM alpine:latestWORKDIR /app# 從構(gòu)建階段復制編譯好的二進制文件
COPY --from=builder /app/myapp .EXPOSE 8080# 啟動應(yīng)用
CMD ["./myapp"]

該案例通過分階段構(gòu)建,首先使用 golang 鏡像進行編譯,然后將編譯好的二進制文件復制到更小的 alpine 鏡像中,減小了最終鏡像的體積,去除了構(gòu)建工具。

2. Node.js + React 前端應(yīng)用構(gòu)建和部署

對于使用 Node.js 構(gòu)建的前端應(yīng)用,開發(fā)人員通常會先構(gòu)建應(yīng)用的生產(chǎn)版本,然后將其部署到一個最小化的靜態(tài)文件服務(wù)器中。例如,使用 nginx 作為靜態(tài)資源的服務(wù)器。

示例:

# 第一階段:構(gòu)建 React 前端應(yīng)用
FROM node:16 AS builderWORKDIR /app# 復制源代碼
COPY . .# 安裝依賴并構(gòu)建前端應(yīng)用
RUN npm install && npm run build# 第二階段:使用 Nginx 作為靜態(tài)文件服務(wù)器
FROM nginx:alpine# 將 React 構(gòu)建的靜態(tài)文件復制到 Nginx 中
COPY --from=builder /app/build /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]

該示例首先使用 Node.js 鏡像來安裝依賴并構(gòu)建 React 應(yīng)用,然后將構(gòu)建好的靜態(tài)文件復制到更輕量的 nginx 鏡像中用于生產(chǎn)部署。這樣可以大大減小鏡像體積,且避免了將開發(fā)依賴暴露在生產(chǎn)環(huán)境中。

3. Java Spring Boot 應(yīng)用構(gòu)建和部署

對于 Java 后端應(yīng)用,企業(yè)級的開發(fā)常常使用 Spring Boot 等框架。多階段構(gòu)建可以將構(gòu)建過程和生產(chǎn)環(huán)境分開,最終鏡像中只包含應(yīng)用程序及其運行時依賴,而不包含構(gòu)建工具或開發(fā)依賴。

示例:

# 第一階段:構(gòu)建階段
FROM maven:3.8.4-openjdk-17 AS builderWORKDIR /app# 復制項目文件并構(gòu)建應(yīng)用
COPY pom.xml .
COPY src ./src
RUN mvn clean install# 第二階段:運行階段
FROM openjdk:17-alpineWORKDIR /app# 從構(gòu)建階段復制 Jar 包
COPY --from=builder /app/target/myapp.jar /app/EXPOSE 8080CMD ["java", "-jar", "myapp.jar"]

這個示例中,我們首先在 maven 鏡像中進行構(gòu)建,然后將構(gòu)建出來的 Jar 包復制到更小的 openjdk 鏡像中進行生產(chǎn)環(huán)境部署。最終鏡像只包含運行所需的 Java 環(huán)境和應(yīng)用,而沒有 Maven 等構(gòu)建工具。

4. Python Flask 應(yīng)用構(gòu)建和部署

Python 應(yīng)用(如 Flask 框架)通常需要一個構(gòu)建階段來安裝依賴并準備應(yīng)用。多階段構(gòu)建在這種情況下同樣可以有效減小鏡像體積。

示例:

# 第一階段:構(gòu)建 Python 環(huán)境
FROM python:3.9-slim AS builderWORKDIR /app# 復制源代碼
COPY . .# 安裝依賴
RUN pip install --no-cache-dir -r requirements.txt# 第二階段:運行 Python 應(yīng)用
FROM python:3.9-slimWORKDIR /app# 從構(gòu)建階段復制安裝好的依賴
COPY --from=builder /app /appEXPOSE 5000CMD ["python", "app.py"]

在這個示例中,構(gòu)建階段將安裝所有 Python 依賴并準備應(yīng)用。然后,將最終應(yīng)用和依賴復制到更小的基礎(chǔ)鏡像中,從而減小鏡像體積。

總結(jié)

在企業(yè)級應(yīng)用中,多階段構(gòu)建非常適合于以下情況:

  • 需要將構(gòu)建過程和運行時環(huán)境分離,避免將開發(fā)工具和中間文件暴露在生產(chǎn)環(huán)境中。
  • 需要優(yōu)化鏡像體積,減少不必要的構(gòu)建依賴。
  • 需要將構(gòu)建工具(如 Maven、Node.js、Go 等)與運行時環(huán)境(如 JDK、Nginx、Alpine 等)分開,確保最終鏡像的安全性和精簡性。

通過這些常見案例,企業(yè)可以實現(xiàn)更高效、精簡、安全的 Docker 鏡像構(gòu)建與部署過程。

http://m.aloenet.com.cn/news/39065.html

相關(guān)文章:

  • 上海網(wǎng)站推廣服務(wù)公司網(wǎng)絡(luò)推廣電話銷售技巧和話術(shù)
  • 個人網(wǎng)站的色彩設(shè)計怎么做香港服務(wù)器
  • 手機端企業(yè)網(wǎng)站模板新聞稿范文300字
  • 江蘇省建設(shè)廳網(wǎng)站建造師欄網(wǎng)絡(luò)推廣圖片
  • 網(wǎng)頁設(shè)計與制作視頻seo網(wǎng)絡(luò)推廣優(yōu)勢
  • 安平誰做網(wǎng)站好如何推廣自己的業(yè)務(wù)
  • 網(wǎng)站開發(fā) 方案搜索引擎優(yōu)化課程總結(jié)
  • 網(wǎng)站鏈接的常見形式如何把品牌推廣出去
  • 備案網(wǎng)站的黑名單完整的品牌推廣方案
  • 開源企業(yè)網(wǎng)站建設(shè)系統(tǒng)seo網(wǎng)站優(yōu)化教程
  • 公眾號和網(wǎng)站先做哪個廣告投放平臺
  • 建設(shè)網(wǎng)站需要的軟硬件重慶公司seo
  • 南昌做網(wǎng)站優(yōu)化價格愛站工具包官網(wǎng)下載
  • 網(wǎng)站開發(fā)學什么編程語言怎么開網(wǎng)店
  • 游戲代理300元一天網(wǎng)絡(luò)seo是什么意思
  • 深圳市南山區(qū)住房和建設(shè)局官方網(wǎng)站抖音seo排名優(yōu)化公司
  • 做請?zhí)W(wǎng)站b站推廣app大全
  • 上饒商城網(wǎng)站建設(shè)百度識圖在線使用
  • 創(chuàng)立一個網(wǎng)站得多少錢整站優(yōu)化關(guān)鍵詞推廣
  • 萬戶網(wǎng)絡(luò)騙局泉州百度推廣排名優(yōu)化
  • 體現(xiàn)網(wǎng)站特色全球熱門網(wǎng)站排名
  • 建材網(wǎng)站建設(shè) 南寧sem代運營托管公司
  • 中山制作企業(yè)網(wǎng)站廣州網(wǎng)站制作服務(wù)
  • 公司介紹網(wǎng)站怎么做只要做好關(guān)鍵詞優(yōu)化
  • 商城小程序定制公司搜索引擎優(yōu)化的重要性
  • 收錄網(wǎng)站是怎么做的網(wǎng)絡(luò)營銷首先要
  • 織夢網(wǎng)站在css中怎樣做導航關(guān)鍵詞優(yōu)化公司靠譜推薦
  • 2019做網(wǎng)站需要營業(yè)執(zhí)照嗎2022最好的百度seo
  • 網(wǎng)頁源代碼搜索關(guān)鍵字如何seo推廣
  • php網(wǎng)站開發(fā)過程免費下載b站視頻軟件