docker - docker 上的 pm2 卡在 getMonitorData
问题描述
我正在尝试部署由多个微服务组成的应用程序,每个微服务都位于不同的 docker 容器中。其中一个(如下所示的主服务)挂在 pm2:client 调用守护程序方法Calling daemon method pm2:getMonitorData on rpc socket:/root/.pm2/rpc.sock
消息并继续打印相同的消息。我试图阅读 pm2 源代码,阅读文档并在互联网上到处寻找,但找不到解决方案。这是调试日志。
main-service_1 | 2018-12-07T18:03:49.482Z axon:sock attempting reconnect
main-service_1 | 2018-12-07T18:03:49.482Z axon:sock closing
main-service_1 | 2018-12-07T18:03:49.482Z axon:sock closing 0 connections
main-service_1 | 2018-12-07T18:03:49.482Z pm2:client Daemon not launched
main-service_1 | 2018-12-07T18:03:49.482Z axon:sock connect attempt null:/root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:03:49: PM2 log: Launching in no daemon mode
main-service_1 | 2018-12-07T18:03:49.596Z axon:sock bind null:/root/.pm2/pub.sock
main-service_1 | 2018-12-07T18:03:49.597Z axon:sock bind null:/root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:03:49.602Z interactor:client Interaction file does not exists
main-service_1 | 2018-12-07T18:03:49.602Z interactor:client Secret key is not defined in configuration { version_management: { active: true },
main-service_1 | public_key: undefined,
main-service_1 | secret_key: undefined,
main-service_1 | machine_name: '572eeba2cd52',
main-service_1 | pm2_version: '3.2.2',
main-service_1 | reverse_interact: true,
main-service_1 | info_node: 'https://root.keymetrics.io',
main-service_1 | agent_transport_websocket: 'false',
main-service_1 | agent_transport_axon: 'true' }
main-service_1 | 2018-12-07T18:03:49.604Z pm2:client Launching RPC client on socket file /root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:03:49.604Z axon:sock connect attempt null:/root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:03:49.604Z axon:sock attempting reconnect
main-service_1 | 2018-12-07T18:03:49.604Z axon:sock closing
main-service_1 | 2018-12-07T18:03:49.604Z axon:sock closing 0 connections
main-service_1 | 2018-12-07T18:03:49.604Z interactor:client Interactor Daemon not launched
main-service_1 | 2018-12-07T18:03:49.604Z axon:sock connect attempt null:/root/.pm2/interactor.sock
main-service_1 | 2018-12-07T18:03:49.604Z axon:sock attempting reconnect
main-service_1 | 2018-12-07T18:03:49.604Z axon:sock closing
main-service_1 | 2018-12-07T18:03:49.604Z axon:sock closing 0 connections
main-service_1 | 2018-12-07T18:03:49.605Z interactor:client Interactor Daemon not launched
main-service_1 | 2018-12-07T18:03:49.605Z axon:sock connect attempt null:/root/.pm2/interactor.sock
main-service_1 | 2018-12-07T18:03:49.605Z axon:sock error ENOENT
main-service_1 | 2018-12-07T18:03:49.605Z axon:sock ignored ENOENT
main-service_1 | 2018-12-07T18:03:49.605Z axon:sock error ENOENT
main-service_1 | 2018-12-07T18:03:49.605Z axon:sock ignored ENOENT
main-service_1 | 2018-12-07T18:03:49.605Z axon:sock error ENOENT
main-service_1 | 2018-12-07T18:03:49.605Z axon:sock ignored ENOENT
main-service_1 | 2018-12-07T18:03:49.606Z axon:sock accept /root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:03:49.607Z axon:sock add socket 0
main-service_1 | 2018-12-07T18:03:49.608Z axon:sock connect
main-service_1 | 2018-12-07T18:03:49.608Z axon:sock add socket 0
main-service_1 | 2018-12-07T18:03:49.608Z axon:queue flush 0 messages
main-service_1 | 2018-12-07T18:03:49.608Z pm2:client RPC Connected to Daemon
main-service_1 | 2018-12-07T18:03:49.614Z axon:sock connect attempt null:/root/.pm2/pub.sock
main-service_1 | 2018-12-07T18:03:49.614Z axon:sock accept /root/.pm2/pub.sock
main-service_1 | 2018-12-07T18:03:49.614Z axon:sock add socket 0
main-service_1 | 2018-12-07T18:03:49.614Z axon:sock connect
main-service_1 | 2018-12-07T18:03:49.614Z axon:sock add socket 0
main-service_1 | 2018-12-07T18:03:49.615Z axon:sub subscribe to "log:*"
main-service_1 | 2018-12-07T18:03:49.615Z pm2:cli Resolved filepath /ecosystem.config.js
main-service_1 | 2018-12-07T18:03:49.639Z pm2:client Calling daemon method pm2:getMonitorData on rpc socket:/root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:03:49.662Z pm2:client Calling daemon method pm2:prepare on rpc socket:/root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:03:49: PM2 log: App [API:0] starting in -fork mode-
main-service_1 | 2018-12-07T18:03:49.665Z pm2:fork_mode stds: {"out":"/root/.pm2/logs/API-out-0.log","err":"/root/.pm2/logs/API-error-0.log"}
main-service_1 | 2018-12-07T18:03:49: PM2 log: App [API:0] online
main-service_1 | 2018-12-07T18:03:49.677Z pm2:god Error vizion::analyze() for given folder: /
main-service_1 | 2018-12-07T18:03:49.678Z pm2:god Error vizion::analyze() for given folder: /
main-service_1 | 2018-12-07T18:03:55.680Z pm2:client Calling daemon method pm2:getMonitorData on rpc socket:/root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:03:57.689Z pm2:client Calling daemon method pm2:getMonitorData on rpc socket:/root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:03:59.693Z pm2:client Calling daemon method pm2:getMonitorData on rpc socket:/root/.pm2/rpc.sock
main-service_1 | 2018-12-07T18:04:01.697Z pm2:client Calling daemon method pm2:getMonitorData on rpc socket:/root/.pm2/rpc.sock
这是我用于 mainService 的 Dockerfile
FROM keymetrics/pm2:latest-jessie
COPY ./ ./
ENV MONGO_URL=http://localhost:3007/slickpoll_polls
ENV DEBUG=*
EXPOSE 3002
RUN npm install
RUN npm install -D ts-node
RUN npm install -D typescript
RUN pm2 install typescript
CMD [ "pm2-runtime", "start", "ecosystem.config.js" ]
这是我的生态系统.config.js
module.exports = {
apps : [{
name: 'API',
script: 'app.ts',
// Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
instances: 1,
autorestart: true,
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}]
};
这是 docker-compose.yml
version: '3'
services:
users-database:
build: ./usersDatabase
volumes:
- ~/dbs/usersDatabase:/data/db
ports:
- 27017:3006
networks:
- usersdb
polls-database:
build: ./pollsDatabase
volumes:
- ~/dbs/pollsDatabase:/data/db
ports:
- 27017:3007
networks:
- pollsdb
users-service:
build: ./usersService
ports:
- 3004:3004
networks:
- users
- usersdb
depends_on:
- users-database
poll-service:
build: ./pollService
ports:
- 3003:3003
depends_on:
- polls-database
networks:
- pollsdb
- api
main-service:
build: ./mainService
ports:
- 3002:3002
networks:
- pollsdb
- users
- api
depends_on:
- users-database
- users-service
- polls-database
networks:
users:
driver: overlay
internal: true
usersdb:
driver: overlay
internal: true
pollsdb:
driver: overlay
internal: true
api:
我花了几乎一整天的时间来解决这个问题,但没有成功。我已经没有太大希望解决它了。我希望你能找到解决办法。
解决方案
推荐阅读
- javascript - 对于 JavaScript 中单个类的多个实例,函数是否为每个实例占用空间?
- python - 基于组对 DataFrame 进行 Winsorize
- sql - SQL 嵌套查询,平均
- python - 将 Python 脚本编译为 .exe 时出错
- python - 在字典中查找某些值的总和
- python - 将二叉树的叶子传递给python中的函数
- css - 使用 CSS 更改 Wordpress 中图标的颜色
- javascript - 为什么这总是评估为假?
- javascript -
在未呈现 bootstrap-vue 的 vue.js CLI 应用程序中 - c++ - 在 C++ 中是否可以使用三元运算符在 if 语句中选择比较运算符?