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

时间:2018-01-10 23:00:47

标签: node.js express docker nodemon

对于我的项目,我在porder中完成了以下Dockerfile以获得使用express.js应用程序开发node.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个文件夹。在我的应用程序中,我配置了这样的twig模板的使用:

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镜像重新运行应用程序?在当前使用的情况下,当模板发生更改以重新加载新模板时,我无法重新启动应用程序。

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

编辑1:

我想要做的是当我更换一个甚至在前端资产上的模板时重新启动我在容器中的应用程序。就像我更改服务器端代码时重新启动它一样。

1 个答案:

答案 0 :(得分:1)

Nodemon允许您指定other extensions以仅监听javascript。

尝试更改

ENTRYPOINT ["nodemon src/server.js"]

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

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