Pur*_*ski 2 node.js docker dockerfile docker-compose
我正在尝试设置反应应用程序的容器.我的目标是使用docker-compose(我想执行一个命令并使一切正常)
问题是,当我尝试使用docker-compose和docker文件(在下面)时,我得到的信息是:
泊坞窗,compose.yml
version: '2'
services:
react:
build: ./images/react
ports:
- "3000:3000"
volumes:
- "/home/my/path:/app"
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM node:6.9
WORKDIR /app
RUN npm install
EXPOSE 3000
CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)
结果
npm WARN enoent ENOENT:没有这样的文件或目录,打开'/app/package.json'
但是当我使用docker run和卷映射时,我能够看到packages.json并运行npm install命令.
docker run -it --rm -v /home/my/path:/app node:6.9 bash
Run Code Online (Sandbox Code Playgroud)
为什么它不使用docker撰写?
请注意,您在docker-compose.yml文件中描述的卷将在运行时挂载,而不是在生成时挂载.这意味着在构建映像时,还没有任何package.json文件(尚未),您可以从中安装依赖项.
当你使用run容器映像时-v /home/my/path:/app,你实际上是首先挂载目录,后续npm install调用将成功完成.
如果您打算将应用程序(包括package.json)安装到容器中,则npm install需要在运行时(CMD)而不是构建时(RUN)进行.
完成此操作的最简单方法是简单地将npm install语句添加到您的CMD指令中(并删除RUN npm install指令):
CMD npm install && npm start
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1099 次 |
| 最近记录: |