簡體   English   中英

使用具有實時重新加載功能的Docker開發NodeJS應用

[英]Developing NodeJS app using Docker with live reload

我正在開發一個使用webpack服務器的webpack應用程序。 Webpack服務器配置為負責自動文件重新加載。 我希望將其作為安裝,這樣,每次更改代碼時都無需重建映像。 我希望node_modules文件夾在映像中可用,這樣就不必在每次啟動容器時都獲取模塊。

實際上,源代碼和node_modules應該處於相同的層次結構級別。 但是問題是當我對源代碼進行卷掛載時,由於將使用卷掛載路徑,因此會缺少node_modules (因為它是映像的一部分)。 有什么辦法可以使這件事起作用?

我很清楚這個問題!

當您掛載卷時,它會刪除容器中掛載的目錄內的文件(從技術上講,它不會刪除它們,但出於我們的目的,它會刪除)。 這是因為文件是BUILD的一部分,而不是RUN的一部分。

有3個修復程序:

1-不是在構建時進行npm install ,而是在運行時進行-例如,在執行docker run命令時。 主機將可以在運行時在已安裝目錄中創建容器文件。

ENTRYPOINT npm install (something like that)

2-在構建過程中將文件復制到其他位置(例如/ temp / node_modules),然后在運行時將其復制回

ENTRYPOINT scriptToCopyFilesBackIntoNodeModules.sh

如果需要從主機訪問,則應使用前兩個中的任何一個。 如果您需要從另一個容器訪問,請使用volumes_from可以簡單地使用上述任何變通辦法。

container1:
    volumes: /node_modules

container2:
    volumes_from: container1

就是這樣-上面的語法是docker-compose語法。

暫無
暫無

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

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