我有一个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