簡體   English   中英

如何使用 Docker 為不同的暫存環境構建 Node JS 應用程序

[英]How build Node JS application using Docker for different staging environments

這應該是例行公事,但我一直找不到任何方法。 我正在使用帶有 Docker 的 Node 進行打包。 像往常一樣,我有三個環境:dev、qa 和 prod。 我有三個帶有許多變量的配置文件:dev-config.json、qa-config.json、prod-config.json。 我需要 Docker 來拾取文件和 package 它們作為ZC5FD214CDD3B0D2B3B42Z272E中的 config.json 圖像。 如何 go 關於 pl.. Thx

要構建僅包含正確配置文件的映像,您可以使用--build-arg

添加

ARG CONFIG_FILE
...
COPY $CONFIG_FILE config.json

在您的 docker 文件中,然后使用

docker build --build-arg CONFIG_FILE=prod-config.json . 

建立你的形象

編輯

另一種可能性是將所有配置文件放入映像中,並在啟動容器時決定使用哪個配置文件。 例如,您可以從環境變量中讀取所需的配置文件名稱(在容器運行時,不要與鏡像構建時的ARG--build-arg混淆),該名稱可以在您啟動時設置你的容器

我在你的節點應用程序的某個地方

// read the config file name from the environment variable 
// and have a fallback if the environment variable is not defined
const configfilename = process.env.CONFIG_FILE || "config.json";  

當你啟動你的容器時,你可以做

docker run --env CONFIG_FILE=prod-config.json  YOURIMAGE 

設置環境變量。 這樣,您將只有一個圖像。

第三種可能性是根本不將配置添加到容器中,而是從運行容器時掛載的外部卷加載它們。 如果您有不同的卷用於不同的配置,您可以在啟動時再次決定掛載哪個卷。 由於您可以在每個卷上為您的配置文件指定相同的名稱,因此您的應用不需要了解任何環境變量,您只需確保使用正確的配置文件路徑並且所有卷都具有相同的文件結構體。

即在您的節點應用程序中

const configfile = '/config/config.json';

然后你開始你的容器安裝正確的配置目錄

docker run -v  /host/path/to/prod-config:/config YOURIMAGE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM