Docker多階段構建Node.js應用程序

Node.js 應用程序

創建一個目錄來存放你的項目文件,然后在該目錄下創建以下文件。

  1. package.json
{"name": "docker-node-test","version": "1.0.0","description": "A simple Node.js app for Docker multi-stage build testing","main": "index.js","scripts": {"start": "node index.js"},"dependencies": {"express": "^4.17.1"}
}
  1. index.js
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;app.get('/', (req, res) => {res.send('Hello, World!');
});app.listen(PORT, () => {console.log(`Server is running on port ${PORT}`);
});

Dockerfile (多階段構建)

# Stage 1: Build the application
FROM node:14 AS builder# Create app directory
WORKDIR /usr/src/app# Install app dependencies
COPY package*.json ./
RUN npm install# Copy app source code
COPY . .# Build the application (if needed)
# RUN npm run build# Stage 2: Run the application
FROM node:14-alpine# Create app directory
WORKDIR /usr/src/app# Copy only the necessary files from the builder stage
COPY --from=builder /usr/src/app .# Expose the port the app runs on
EXPOSE 3000# Start the app
CMD ["npm", "start"]

使用說明

  1. 創建項目目錄和文件
    創建一個新的目錄,并在其中創建上述package.jsonindex.js文件。

  2. 創建Dockerfile
    在同一目錄中創建Dockerfile文件,并將上述內容復制進去。

  3. 構建Docker鏡像
    在終端中導航到該目錄并運行以下命令:

    docker build -t docker-node-test .
    
  4. 運行Docker容器
    運行以下命令來啟動容器:

    docker run -p 3000:3000 docker-node-test
    
  5. 測試應用
    在瀏覽器中訪問http://localhost:3000,你應該會看到"Hello, World!"。

通過這種多階段構建,你可以減少最終鏡像的大小,僅包含運行應用所需的文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38407.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38407.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38407.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【折騰筆記】使用 PicList + Lsky Pro 對圖片進行雙重壓縮

前言 因為服務器的帶寬比較小,為了提高網站的訪問速度,網站內的圖片進行壓縮是必不可少的。另外將圖片轉換成WebP的格式可以減小文件大小、加快加載速度、支持高級特性(如透明度和動畫),以及減少存儲需求,為網站提供了顯著的性能。需要提前安裝好PicList客戶端和Lsky Pr…

最快33天錄用!一投就中的醫學4區SCI,幾乎不退稿~

【SciencePub學術】今天小編給大家推薦2本生物醫學領域的SCI,此期刊為我處目前合作的重點期刊!影響因子0-3.0之間,最重要的是審稿周期較短,對急投的學者較為友好! 醫學醫藥類SCI 01 / 期刊概況 【期刊簡介】IF&…

那些好用的 Vue3 的工具搭子!!【送源碼】

2020 年 9 月 18 日 Vue3 的正式發布已經過去了大約 3 年 9 個月左右!!! 隨著 Vue3 版本的逐漸成熟,我們的前端世界也迎來了一系列令人振奮的更新和工具。Vue 生態圈的持續擴大,無疑為前端開發人員帶來了前所未有的便…

通過pycharm使用git和github的步驟

一、在Pycharm工具中配置集成Git和GitHub。 1.集成Git。 打開Pycharm, 點擊File-->Settins-->Version Control-->Git 然后在 Path to Git executable中選擇本地的git.exe路徑。如下圖: 2.集成GitHub 打開Pycharm, 點擊File-->Settins-->Version…

探索未來遠程調試新紀元——《串口網口遠程調試軟件》:無縫連接,高效調試

文章目錄 前言一、無縫連接,突破距離限制二、高效調試,提升工作效率三、安全可靠,保護數據安全四、用戶友好,簡化操作流程五、軟件地址六、遠程調試軟件 七、基本操作1、訂閱主題2、連接3、串口調試4、網口調試 八、軟件地址結束語…

PO模式登錄測試

項目實踐 登陸項目測試 get_driver import page from selenium import webdriverclass GetDriver:driver Noneclassmethoddef get_driver(cls):if cls.driver is None:cls.driver webdriver.Edge()cls.driver.maximize_window()cls.driver.get(page.url)return cls.drivercl…

Java高風險漏洞與修復之——LDAP injection(LDAP注入)

LDAP注入介紹 LDAP注入是一種攻擊技術,它可以利用應用程序中的安全漏洞對LDAP(輕量級目錄訪問協議)服務進行惡意查詢或修改操作。當應用程序未能適當地清理用戶的輸入內容,將其嵌入到LDAP查詢中時,就可能發生LDAP注入。攻擊者通過注入未經授權的指令或條件來操縱查詢結果…

【代碼隨想錄訓練營】【Day 66】【圖論-3】| 卡碼 101-104

【代碼隨想錄訓練營】【Day 66】【圖論-3】| 卡碼 101-104 需強化知識點 103,104 優化思路 題目 101. 孤島的總面積 此處 area 多余 def dfs(grid, x, y, area):dirs [[0, 1], [0, -1], [1, 0], [-1, 0]]m, n len(grid), len(grid[0])area[0] 1grid[x][y] …

k8s學習筆記——k8s升級

前一段時間,由于搭建k8s集群的硬件設備故障,老化導致k8s需要重裝。使用原來的kubeadm安裝方式卻發現裝不了了。查了一下官方文檔,說從v1.24版本之后,kubelet移除了容器引擎,容器及鏡像管理將有第三方工具來接管&#x…

Vue.js有哪些優點和缺點

Vue.js 作為一個流行的前端框架,具有許多優點和一些潛在的缺點。以下是 Vue.js 的一些主要優點和缺點: 優點: 輕量級和靈活性:Vue.js 的核心庫專注于視圖層,這使得它非常輕量級(壓縮后只有幾十KB&#xff…

Web 反爬指南

本質上說,防抓的目的在于增加腳本或機器獲取你網站內容的難度,而不要影響真實用戶的使用或搜索引擎的收錄 不幸的是這挺難的,你需要在防抓和降低真實用戶以及搜索引擎的可訪問性之間做一下權衡。 為了防爬(也稱為網頁抓取、屏幕…

智譜AI: ChatGLM API的使用

一、獲取API 1、打開網址:智譜AI開放平臺 注冊賬號登錄 2、登錄,查看API key (注冊后贈送100萬token,實名認證后多贈送400萬, 有效期一個) 二、安裝及調用 安裝質譜SDK pip install zhipuai調用方式 流式調用 from zhipuai import ZhipuA…

開放簽電子簽章,讓簽字有跡可循

開放簽(企業版)V2.0.5版本上線后,系統支持一鍵查詢電子文件的簽署操作記錄,支持一鍵生成詳細的簽署記錄報告,詳細請看下圖: 1、操作記錄詳情: 從合同發起、填寫、簽署、撤銷等環節全流程展示操…

【Linux從入門到放棄】探究進程如何退出以進程等待的前因后果

🧑?💻作者: 情話0.0 📝專欄:《Linux從入門到放棄》 👦個人簡介:一名雙非編程菜鳥,在這里分享自己的編程學習筆記,歡迎大家的指正與點贊,謝謝! 進…

常見反爬及應對

一,特殊混淆的還原 1.1 還原 AAEncode 與 JJEncode AAEncode是一種JavaScript代碼混淆算法,利用它,可以將代碼轉換成 顏文字 表示的JavaScript代碼。 去掉代碼最后的 (‘‘),這是函數的自調用,去除后就是函數的聲明…

【CSharp】定義結構體并指定字段對齊

【CSharp】定義結構體并指定字段對齊 1.背景2.代碼3.分析1.背景 在 C# 中可以通過 StructLayout 屬性來定義結構體并指定字段對齊方式。 在 C# 中,內存對齊是指數據在內存中的排列方式,使用StructLayout 特性用于控制結構體的內存布局。其特性可以指定字段的內存排列順序(例…

【揭秘】國內十大頂尖AI大模型,引領智能科技新紀元

大模型大模型通常指的是參數量非常大、數據量也非常大的深度學習模型。這些模型由數百萬到數十億甚至更多的參數組成,需要海量的數據和強大的計算資源進行訓練和推理學習的模型。大模型設計的目的在于提高模型的表示能力和性能、應對復雜數據集和任務、提升泛化能力…

6、限界上下文:定義領域邊界的利器

在DDD限界上下文:定義領域邊界的利器領域建模和微服務建設過程中,會有很多項目參與者,包括領域專家、產品經理、項目經理、架構師、開發經理和測試經理等。對于同樣的領域知識,不同的參與者可能會有不同的理解。而且有的時候同一個…

嵌入式學習——硬件(Linux系統在2440上的啟動)——day57

1. Linux2.6系統在s3c2440上的啟動過程分三個階段 1.1 啟動u-boot 1.2 啟動Linux內核 1.3 掛載根文件系統 2. bootloader 2.1 定義 bootloader的本質是一個裸機程序,bootlood專門是為了能夠正確地啟動linux操作系 統,在系統初上電時需要對系統做一些…

BK145FRC10HSK、BK165FRC10HSK電液比例開環控制變量泵放大器

BK15FRC10HAK、BK35FRC10HAK、BK45FRC10HAK、BK55FRC10HAK、BK70FRC10HSK、BK80FRC10HSK、BK90FRC10HSK、BK100FRC10HSK、BK120FRC10HSK、BK145FRC10HSK、BK165FRC10HSK、BK180FRC10HSK電液比例開環控制柱塞泵主要是在傳統的液壓泵基礎上,增加了電液比例控制先導閥。…