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"]
您可能需要在您的用例参数中传递更多文件扩展名。
对于我的项目,我已经完成了以下 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"]
您可能需要在您的用例参数中传递更多文件扩展名。