node.js - Docker 容器内的 Nodemon

标签 node.js docker dockerfile nodemon docker-container

我正在尝试在 docker 容器中使用 nodemon:

Dockerfile

FROM node:carbon
RUN npm install -g nodemon
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "nodemon" ]

构建/运行命令

docker build -t tag/apt .
docker run -p 49160:8080 -v /local/path/to/apt:/usr/src/app -d tag/apt

将本地卷附加到容器以监视代码更改会导致一些覆盖,并且 nodemon 会提示找不到 Node 模块(其中任何一个)。我该如何解决这个问题?

最佳答案

在您的 Dockerfile 中,您在复制 package*json 文件后运行 npm install。在 /usr/src/app 中正确创建了一个 node_modules 目录,您就可以开始了。

但是,当您将本地目录挂载到 /usr/src/app 时,容器内该目录的内容将被本地版本的 Node 项目覆盖,这显然缺少node_modules 目录,导致您遇到的错误。

挂载目录后,您需要在正在运行的容器上运行 npm install。例如你可以运行这样的东西:

docker exec -ti <containername> npm install

请注意,您必须暂时CMD 指令更改为如下内容:

CMD ["sleep", "3600"]

为了能够进入容器。

这将导致在您的本地目录中创建一个 node_modules 目录,并且您的容器应该正确运行 nodemon(在切换回当前的 CMD 之后)。

关于node.js - Docker 容器内的 Nodemon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48325920/

相关文章:

安装在 Windows 8 上的 Docker 卷不起作用

node.js - 基于构建 ARG 在 Dockerfile 中有条件地设置 ENV 变量

docker - docker 1.9注册表API更改

docker - docker-compose drupal不接受我的数据库名称,并在下面抛出错误

docker - 使用Dockerfile将文件从Container复制到主机

node.js - 终端进度条未显示在 Docker 控制台中。

javascript - 返回的 express err 对象不包含 err.message

node.js - NodeJS 和 Forever(监控和重启应用程序)

node.js - “EMALFORMED Failed to read bower.json” "unexpected token/"

docker - 在 Docker 构建期间安装 brew 包不起作用