使用 RUN 命令創建檔案時,在指定的共享卷檔案夾中創建的任何檔案在嘗試在 CMD 命令中訪問時都會消失
卷在哪里:
...
volumes:
- './hostpersist:/usr/src/app/persist'
例如,以下 Dockerfile 不創建檔案,該檔案對index.js腳本不可見,主機檔案系統也不可見
...
WORKDIR /usr/src/app
...
# creates file in persist/file.txt
RUN node migrate.js
# persist/file.txt does not exist
CMD [ "node", "index.js" ]
當將兩個腳本都放在 CMD 中運行時,該檔案由 index.js
...
# persist/file.txt exists
CMD node migrate.js && node index.js
有沒有辦法保持檔案更改持久化而不將所有內容都塞入 CMD?
uj5u.com熱心網友回復:
卷在容器創建(實體化)后掛載,從而覆寫您在容器映像運行時創建的內容(即 RUN do_something_on_/usr/src/app/persist)。
如果您在 docker-compose 檔案中省略卷:宣告,您將看到,由節點 migrate.js 呼叫創建的檔案將在您的容器中可用。
所以,總而言之,我會進行運行時安裝,這是您對兩個節點執行的 CMD 呼叫。在創建容器并安裝本地主機卷后,這些肯定會被呼叫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/347901.html
