Node.js:当 docker 容器上的文件更改时重新运行程序

Node.js: rerun the program when a file changes on a docker container

对于我的项目,我已经完成了以下 Dockerfile 以便有一个基础来开发 node.js 和 express.js 应用程序:

FROM node:alpine
MAINTAINER "Desyllas Dimitrios"

ENV NEO4J_HOST=""
ENV NEO4J_USER=""
ENV NEO4J_PASSWORD=""
ENV MONGO_CONNECTION_STRING=""
ENV LOGS_DIR="/var/log/data_map"

COPY ./docker_scripts/entrypoint_dev.sh /usr/local/bin/entrypoint.sh

RUN chmod +x /usr/local/bin/entrypoint.sh &&\
    chown root:root /usr/local/bin/entrypoint.sh &&\
    mkdir -p /opt/map &&\
    mkdir -p /var/log/data_map &&\
    chmod 0666 /var/log/data_map &&\
    npm install nodemon -g

EXPOSE 7474
VOLUME /var/log/data_map
VOLUME /opt/map

WORKDIR /opt/map

ENTRYPOINT ["nodemon src/server.js"]

但是在我的项目中,我有一个包含树枝模板的文件夹,该文件夹是 src/views 那个。在我的应用程序中,我配置了这样的树枝模板的使用:

const express=require('express');
const app=express();

app.set('views', __dirname + '/views');
app.set('view engine', 'twig');
app.set('twig options', {
    strict_variables: false
});

在我使用的路线上:

router.get('/my-route',function(req,res,next){
  res.render('my-route.html.twig',{
    'title': "Main Panel"
  });
});

我的问题是如何使我的 docker 图片重新 运行 应用程序,即使模板已更改?在当前使用情况下,当模板发生更改以重新加载新应用时,我无法重新启动我的应用程序。

请记住,我 运行 我的 nodejs 应用程序带有 nodemon 以便在我开发软件时在文件更改期间重新运行 应用程序。

编辑 1:

我想做的是在更改前端资产的模板时重新启动容器内的应用程序,就像我在更改服务器端代码时重新启动它一样。

Nodemon 允许您指定 other extensions 观看,而不仅仅是 javascript。

尝试改变

ENTRYPOINT ["nodemon src/server.js"]

ENTRYPOINT ["nodemon -e js,twig src/server.js"]

您可能需要在您的用例参数中传递更多文件扩展名。