Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用链接的docker容器配置PM2模块_Mongodb_Docker_Docker Compose_Pm2 - Fatal编程技术网

Mongodb 使用链接的docker容器配置PM2模块

Mongodb 使用链接的docker容器配置PM2模块,mongodb,docker,docker-compose,pm2,Mongodb,Docker,Docker Compose,Pm2,我的应用程序位于Docker容器中 FROM keymetrics/pm2-docker-alpine:7 ENV environment development # Add PM2 modules RUN pm2 install pm2-mongodb ADD . . EXPOSE 3000 CMD ["pm2-docker", "ecosystem.config.js", "--env ${environment}"] 我将PM2与ecosystem.config.js一起使用

我的应用程序位于Docker容器中

FROM keymetrics/pm2-docker-alpine:7

ENV environment development

# Add PM2 modules
RUN pm2 install pm2-mongodb

ADD . .

EXPOSE 3000

CMD ["pm2-docker", "ecosystem.config.js", "--env ${environment}"]
我将PM2与ecosystem.config.js一起使用

module.exports = {
  apps: [
    {
      name: 'api',
      script: 'api/index.js',
      env: {
        PORT: process.env.PORT || 3000,
        API_MONGO_URL: process.env.MONGO_URL || 'mongodb://localhost/api',
      },
      env_production: {
        MONGO_URL: `mongodb://${process.env.MONGODB_PORT_27017_TCP_ADDR}:${process.env.MONGODB_PORT_27017_TCP_PORT}/api`,
      },
    },
  ],
};
此应用程序依赖于MongoDB服务。。。所以我用链接容器运行这个

docker run -it --name api -e environment=production --link mongodb:mongodb api:latest sh
问题是当我在容器内执行此命令时

/app # pm2-docker ecosystem.config.js --env $environment
[STREAMING] Now streaming realtime logs for [all] processes
0|pm2-mong | You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection:
0|pm2-mong | Error: double colon in host identifier
0|pm2-mong |     at module.exports (/root/.pm2/node_modules/mongodb/lib/url_parser.js:89:13)
0|pm2-mong |     at connect (/root/.pm2/node_modules/mongodb/lib/mongo_client.js:480:16)
0|pm2-mong |     at /root/.pm2/node_modules/mongodb/lib/mongo_client.js:234:7
0|pm2-mong |     at Function.MongoClient.connect (/root/.pm2/node_modules/mongodb/lib/mongo_client.js:230:12)
0|pm2-mong |     at Object.init (/root/.pm2/node_modules/pm2-mongodb/lib/stats/client.js:53:15)
0|pm2-mong |     at Object.init (/root/.pm2/node_modules/pm2-mongodb/lib/stats/index.js:78:12)
0|pm2-mong |     at /root/.pm2/node_modules/pm2-mongodb/app.js:33:9
0|pm2-mong |     at Object.PMX.initModule (/root/.pm2/node_modules/pmx/lib/pmx.js:116:12)
0|pm2-mong |     at Object.<anonymous> (/root/.pm2/node_modules/pm2-mongodb/app.js:4:5)
0|pm2-mong |     at Module._compile (module.js:571:32)
PM2        | App [pm2-mongodb] with id [0] and pid [21], exited with code [0] via signal [SIGINT]
PM2        | Starting execution sequence in -fork mode- for app name:pm2-mongodb id:0
PM2        | App name:pm2-mongodb id:0 online
所以问题是何时/何地我能做到

MONGODB_端口_27017_TCP_ADDR
MONGODB_端口_27017_TCP_端口
仅在运行容器后可用

pm2 set pm2-mongodb:ip ${MONGODB_PORT_27017_TCP_ADDR}
pm2 set pm2-mongodb:port ${MONGODB_PORT_27017_TCP_PORT}