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

问题描述 投票:0回答:1

对于我的项目,我做了以下

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
文件夹。在我的应用程序中,我配置了树枝模板的使用,如下所示:

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:

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

node.js express docker nodemon
1个回答
3
投票

Nodemon 允许您指定 其他扩展来观看,而不仅仅是 javascript。

尝试改变

ENTRYPOINT ["nodemon src/server.js"]

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

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

© www.soinside.com 2019 - 2024. All rights reserved.