当 nodejs express 作为 docker 守护进程运行时,它不会使用 ect 模板引擎呈现 html 页面

nodejs express doesn't render html page with ect templating engine when it runs as a docker daemon

我正在尝试 运行 一个在 Docker 上的 ECT 模板引擎上呈现 HTML 页面的节点 js 应用程序,情况是一旦我直接与运行ning 容器如下命令和其中的 运行 节点。

docker run -p 80:5000 -it abdullahshahin/admin-panel bash

但是当我运行它作为守护进程时,express 显示如下错误

Error: Failed to lookup view "index" in views directory "/views"

下面是ect的声明

var ectRenderer = ECT({ watch: true, root:'/var/njs/html/views', ext : '.ect' });

另外,我试过这个

root: __dirname + '/views' and this root:'./views',没有任何帮助。

下面是主要的应用程序文件代码,我在这个上使用 MVC

// DECLARE VARIABLES
var express = require('express');
var instance = express();
var parser = require('body-parser');
instance.use(parser({strict:false}));
var commander = require('commander');
var ECT = require('ect');
var ectRenderer = ECT({ watch: true, root: __dirname + '/views', ext : '.ect' });

    // PROMPTE USERS TO ENTER PORT
    commander.option('-p, --port <n>', 'Port to run server on',parseInt).parse(process.argv);
    if(!commander.port)
    {
        console.log("Please provide a port number");
        process.exit(1);
    }

    // EXPRESS USES
    instance.set('view engine', 'ect');
    instance.engine('ect', ectRenderer.render);
    // EXPRESS TO USE ROUTES
    require("./routes/routes.js")(instance);
    //instance.use(parser);
    // EXPRESS TO USE PROMPTED PORT
    instance.listen(commander.port);

下面是Docker文件内容

FROM        ubuntu

RUN         apt-get update

RUN         apt-get --yes install software-properties-common

RUN         apt-add-repository -y ppa:chris-lea/node.js

RUN         apt-get update

RUN         apt-get --yes install nodejs

COPY . /var/njs/html

RUN cd /var/njs/html; npm install

EXPOSE      1234

CMD node /var/njs/html/app.js -p 1234

有没有人对此有任何想法?

我刚找到它,我在 运行 容器时提到了带有守护程序选项的工作目录,如下所示

docker run -p 80:1234 -w="/var/njs/html" -d abdullahshahin/admin-panel

https://docs.docker.com/reference/run/#env-environment-variables