我有一個node.js應用程序,它將運行時版本編譯到dist
文件夾中。因此package.json
文件指定了啓動腳本node dist/index.js
。啓動應用程序失敗
我現在想containerize,但容器不需要有分佈目錄,這些文件確實應該活在應用程序的根,所以我Dockerfile
包含線
COPY package.json /usr/src/app/
COPY dist/* /usr/src/app/
哪些地方圖像中的運行時文件。我的問題是,當搬運工文件發出了最後的命令:
CMD ["npm", "start"]
失敗,因爲index.js
現在是在錯誤的位置(因爲它是在不存在分佈目錄尋找它)。我可以通過發佈來解決問題:
CMD ["node", "index.js"]
取而代之的是,但這似乎是錯誤的事情。什麼是正確的方法?
*更新I *
我已經修改了index.js
因此它可能(即它希望找到它在dist/
文件夾需要的資源),通過發出node dist/index.js
從項目的根目錄中運行,但當然,現在這也是一個問題,因爲沒有分配目錄。這通常如何接近?
是的,沒有理由使用'npm start'。另外,看看'.dockerignore' [1]文件,它可以幫助你僅僅複製你需要的文件。 [1] https://docs.docker.com/engine/reference/builder/#dockerignore-file –
謝謝你們倆(+1)。那美妙的作品 – ekkis
@PavolPitonak,實際上有。我發現'package.json'的config部分的環境變量不會被加載,除非我通過npm start – ekkis