繁体   English   中英

开发环境NodeJS和Docker

[英]Development env NodeJS and Docker

我创建了以下Dockerfile

ROM node:argon

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 8080
CMD [ "npm", "start" ]

当我构建和运行Docker映像时,一切正常

但是,当我跑步时

docker run -p 8080:8080 -v ~/projects/NodeJSExample/:/usr/src/app/ nodeexample

我有 :

Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/usr/src/app/server.js:3:17)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)

如何配置Dockerfile以动态支持代码更改?

您面临的问题是您在容器的/usr/src/app/文件夹中声明了一个卷。 它的作用是用文件系统上的那个文件夹替换了您容器的文件夹,该文件系统当然没有执行npm install命令。

好像您的Dockerfile是有效的,您可以像这样分发它。 但是出于本地开发目的,您不能让npm install在映像(Dockerfile)本身上运行。 因此,您只需在容器启动时在本地~/projects/NodeJSExample/上运行npm install命令,就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM