无法从主机访问Dockerized Loopback 4应用程序

ilu*_*usi 5 loopback node.js docker

有没有人成功停靠Loopback-4(lb4)应用程序?我设置了一个基于lb4的应用程序,并试图将它停靠,但是虽然Docker似乎正在运行应用程序,但它并没有在我的localhost上显示.

我做的步骤:

  1. 在本地设置基于Loopback 4的应用程序
  2. 创建Dockerfile(这里是代码)
  3. (cd到Dockerfile所在的目录)Build:docker build -t lb4.
  4. 运行:docker run -p 3000:3000 lb4

但是,应用程序不会显示在http:// localhost:3000上 运行容器的输出:

trip@1.0.0 prestart/usr/src/app npm run build

trip@1.0.0 build/usr/src/app lb-tsc es2017 --outDir dist

trip@1.0.0 start/usr/src/app node.

服务器运行在http://127.0.0.1:3000 尝试http://127.0.0.1:3000/ping


编辑

为了保存这个问题,回购中的相关代码(步骤2)被粘贴在这里,

// index.js
const application = require('./dist');
module.exports = application;
if (require.main === module) {
  // Run the application
  const config = {
    rest: {
      port: +process.env.PORT || 3000,
      host: process.env.HOST || 'localhost',
      openApiSpec: {
        // useful when used with OASGraph to locate your application
        setServersFromRequest: true,
      },
    },
  };
  application.main(config).catch(err => {
    console.error('Cannot start the application.', err);
    process.exit(1);
  });
}
Run Code Online (Sandbox Code Playgroud)

Siy*_*iyu 5

正如@Henry 在评论中所建议的,在您的 index.js 中,更改为使用

  host: '0.0.0.0',
Run Code Online (Sandbox Code Playgroud)

要了解更多有关 localhost (127.0.0.1) 和 0.0.0.0 之间的差异,请参阅https://superuser.com/questions/949428/whats-the-difference-between-127-0-0-1-and-0 -0-0-0

聚苯乙烯

最好npm run build在构建阶段使用,以便在运行时更快启动。

  • @ilusi 对我来说,评论 `host` 参数有效。`// 主机:process.env.HOST || '本地主机'` (2认同)