Tag: pm2

pm2-docker的“唯一”论点是什么?

pm2-docker应该在Docker容器中运行,所以…根据http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/ : 要分割他自己的Docker中的每个进程,你可以使用-only [app-name]选项: CMD [“pm2-docker”,“process.yml”,“ – only”,“APP”] 这是什么 – –onlyselect? “在他自己的Docker中分割每个进程”。 ? 他自己的Docker是什么? 容器? 所以pm2-docker在一个容器里运行,并在里面产生容器?

Expressjs应用程序从Docker中的PM2开始,随着SIGINT而死

我有一个非常简单的Expressjs应用程序 – 基本上是一个单一的职位电话库封装。 这里是app.js内容: var compression = require('compression'); var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); var convert = require('./routes/convert'); var app = express(); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(compression()); app.use('/', convert); module.exports = app; 然后,我创build了Dockerfile来容器化应用程序: FROM mhart/alpine-node WORKDIR /src COPY package.json ./ COPY app.js ./ ADD routes/ ./routes/ ADD bin/ […]

如何使用node.js与Docker实现pm2

我想使用Docker实现节点服务pm2。 我已经执行了pm2实施的以下步骤 在Package.json中 增加了依赖性 "pm2": "^2.7.0", 和 "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "pm2-docker process.yml –watch" }, 添加了process.yml apps: – script: 'server.js' name: 'pm2-docker' pm2 apps: – script: 'server.js' name: 'pm2-docker' docker apps: – script: 'server.js' name: 'pm2-docker'在Dockerfile中 FROM keymetrics/pm2-docker-alpine:latest ARG ENVIRONMENT ARG PORT ENV PORT $PORT ENV ENVIRONMENT […]

从Docker容器中运行的另一个节点应用程序启动节点应用程序

我有一个节点应用程序公开了一个REST API。 当它收到一个http请求,它启动另一个/不同的节点应用程序,我们称之为“服务应用程序”。 REST应用程序在容器中运行,启动服务应用程序最简单的方法是调用child_process.exec(我们只是pm2),但是它们在同一个容器中运行。 如果REST应用程序获得多个请求,这个容器解决scheme就不会扩展。 那么是否有可能REST应用程序可以启动在自己的容器内运行的服务应用程序? 如果是的话该怎么做? 有人还build议我在docker swarm中运行我的REST应用程序,这样当它得到请求时,它就会启动服务应用程序的另一个docker服务。 但我不知道该怎么做,甚至有可能呢? 我是新来的docker工人,任何意见是高度赞赏。 谢谢!

时间不会出现在日志与pm2

你好,我想时间t出现在我的日志,我设置dockerfile上的选项,但时间不显示。 Dockerfile: FROM *** COPY . /src WORKDIR /src RUN npm install ENV LD_PRELOAD /src/node_modules/sharp/vendor/lib/libz.so RUN npm run build RUN cp -rv /src/dist/* /src && rm -rf /src/dist RUN mkdir -p /src/document && mkdir -p /src/tempUploads ENV NODE_ENV __NODE_ENV__ RUN echo "Europe/Paris" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata CMD ["pm2-docker", "index.js", "–log-date-format" "YYYY-MM-DD HH:mm"]

在dockerfile中运行npm install后,node_modules不可用

我尝试为我的节点应用程序创build一个dockerfile。 但运行npm后,我看到 在7.966s添加了160个包 但我没有看到该文件夹​​中的node_modules,当我启动应用程序,我看到node_moduls丢失=>docker不工作 这是我的dockerfile FROM keymetrics/pm2:latest # create app directory in container #RUN mkdir -p /app # set /app directory as default working directory WORKDIR /app # only copy package.json initially so that `RUN npm start` layer is recreated only # if there are changes in package.json ADD dist/package.json /app/ ENV MONGO_HOST=mongodb://localhost/chronas-api ENV MONGO_PORT=27017 […]

node.js + pm2 – 根据环境configurationnode_args

下面是一个非常简单的process.json ,用pm2启动一个js应用程序。 我的目标是让这个过程启动下面的node_args但是只能用于非prod启动 。 所以,例如,如果某个环境variables是以某种方式设置的,则触发node_args,否则忽略它们。 这可能吗? 如果没有,我可以做的任何解决方法? { apps : [ { name : 'API', script : './app.js', node_args: ["–inspect","–debug=0.0.0.0:7000"], env: { NODE_ENV: 'development' } } ] } 我知道有可能在命令行中抛出node_args ,但是目标是在node_args中运行,其中“run”命令对于源图像是静态的,所以这不是真正可行的。 这是我的Dockerfile中的CMD条目: CMD [ "pm2-docker", "–auto-exit", "–watch", "process.json"]

在运行的Docker容器上testing:我的环境variables在哪里?

背景 我正在运行的docker容器中testing代码。 PM2将过程级别的variables传递给我的应用程序。 虽然我的应用程序运行正常,并且有权访问我在json文件pm2中设置的环境variables,但是我创build的新bash会话用docker exec -it bash来testing它并不能访问这些variables。 根据我通过实验和研究所了解到的,docker不允许修改正在运行的容器中的环境variables。 所以如果我在新的bash会话中运行printenv ,我的variables就不存在了。 我使用npm test (在新的bash会话中) npm test被设置为运行在正在运行的服务器上(我的应用程序部署在当前正在运行的容器中)。 题 我怎样才能获得相同的环境variables,我的进程级别上运行的应用程序在环境级别可用,所以新的bash会话可以可靠地testing我的应用程序? 对于docker来说,我相对比较陌生,可能以这种方式对正在运行的容器进行testing是一种反模式。 我接受另一种方式来尝试这个build议,但我更喜欢做这个“docker的方式”。 谢谢! 我看过的资源 文档显示如何在运行docker exec时手动设置环境variables。 我有足够的variables来使这个繁琐,而且很容易出现人为错误。 这 SOpost是非常相似的,但它假设没有容器已经运行。 我有一个正在运行的容器,我正在testing。 本文解释了docker exec和docker run之间的一些区别

在自动缩放环境中使用pm2

我打算使用AWS EC2容器服务来托pipe一个暴露REST API的自动扩展的Node.js + Express实例组。 我看到多篇文章告诉我,我应该使用pm2 over forever.js来确保我的应用程序在崩溃时重新启动,我可以顺利地重新载入应用程序等等。 但是,我对容器内部的pm2应该使用什么configuration感到困惑。 由于这些实例会自动缩放,我还应该以“集群模式”运行进程pipe理器吗? 我想确保我从我的实例中获得最大收益,而且我似乎无法find关于在像这样的自动扩展环境中是否需要群集的明确答案(只是pm2带有负载均衡器和缩放技术本身)。

当我用PM2 + Docker启动我的应用程序时,只需运行并退出

我尝试按照这个教程 ,但是当我执行我的应用程序没有任何反应 我的Dockerfile(CHANGED) FROM keymetrics/pm2-docker-alpine:7 WORKDIR /api RUN npm install pm2 -g ADD . . CMD ["pm2-docker", "ecosystem.config.js"] 和我的ecosystem.config.js .. const maxMemory = process.env.WEB_MEMORY || 80; const nodeEnv = process.env.NODE_ENV || 'development'; module.exports = { apps: [ { name: 'api', script: 'api/index.js', node_args: [ '–optimize_for_size', '–max_old_space_size=400', '–gc_interval=100', ], instances: process.env.WEB_CONCURRENCY || -1, exec_mode: 'cluster', max_memory_restart: […]