【问题标题】:docker-compose up fails for npmnpm 的 docker-compose up 失败
【发布时间】:2021-04-26 02:07:09
【问题描述】:

我在运行docker-compose up 命令时遇到以下异常:

Creating compose_node-app_1 ... done
Attaching to compose_node-app_1
node-app_1  | 
node-app_1  | > start
node-app_1  | > node index.js
node-app_1  | 
node-app_1  | /usr/app/node_modules/assert-options/dist/src/index.js:16
node-app_1  |                 throw new Error('Option "' + a + '" is not recognized.');
node-app_1  |                 ^
node-app_1  | 
node-app_1  | Error: Option "host" is not recognized.
node-app_1  |     at assertOptions (/usr/app/node_modules/assert-options/dist/src/index.js:16:23)
node-app_1  |     at $main (/usr/app/node_modules/pg-promise/lib/main.js:194:15)
node-app_1  |     at Object.<anonymous> (/usr/app/index.js:13:12)
node-app_1  |     at Module._compile (node:internal/modules/cjs/loader:1108:14)
node-app_1  |     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)
node-app_1  |     at Module.load (node:internal/modules/cjs/loader:973:32)
node-app_1  |     at Function.Module._load (node:internal/modules/cjs/loader:813:14)
node-app_1  |     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
node-app_1  |     at node:internal/main/run_main_module:17:47
node-app_1  | npm ERR! code 1
node-app_1  | npm ERR! path /usr/app
node-app_1  | npm ERR! command failed
node-app_1  | npm ERR! command sh -c node index.js
node-app_1  | 
node-app_1  | npm ERR! A complete log of this run can be found in:
node-app_1  | npm ERR!     /root/.npm/_logs/2021-01-21T15_49_47_966Z-debug.log

以下是我在不同文件中的内容:

docker-compose.yml

version: '3.4'
services:
        # postgres-server:
        #         network_mode: host
        #         image: postgres
        #         restart: always
        #         environment:
        #                 POSTGRES_PASSWORD: example
        # adminer:
        #         network_mode: host
        #         image: adminer
        #         restart: always
        #         ports:
        #                 - '8080:8080'
        node-app:
                restart: on-failure
                build: .
                ports:
                        - '8089:8089'

index.js

const express = require('express');
const app = express();
const hostname = '127.0.0.1';
app.get('/', (req, res)=> {

  res.send('Welcome to K8s session')
});
app.listen(8089, hostname, ()=>{
  console.log('Listening to port 8080')
});

package.json

{
  "dependencies":{
    "express":"*"
  },
  "scripts":{
    "start": "node index.js"
  }
}

Dockerfile

FROM node:alpine

WORKDIR /usr/app
COPY . .
RUN npm install --global
COPY ./package.json .

CMD ["npm", "start"]

如果我通常使用 docker 命令来构建和运行此容器,那么可以这样做.. 但我正在尝试通过 docker-compose,因为我想扩展以使用 db.. 有人可以建议这个主机异常是什么吗?我们如何解决问题?

谢谢

【问题讨论】:

  • 尝试将主机名更改为 0.0.0.0
  • 也尝试了同样的方法..仍然是同样的问题..然后从那里删除了主机名,然后也没有运气。
  • 最可能的原因是您没有正确关注initialization steps,试图将host 设置在不属于它的Initialization Options 内,因此出现错误。如果您遵循文档,该选项将在连接详细信息中传递,这是下一步。

标签: javascript node.js docker npm docker-compose


【解决方案1】:

这不是 docker-compose 的问题,而是您在 express 中使用了listen 命令。

您不需要在listen 调用中设置主机名,将其设置为循环只会使其监听自身,这是行不通的。

删除主机名,你应该是黄金。

【讨论】:

  • 我已经尝试过相同的,删除了主机名.. 仍然是同样的问题。
  • 见下文是我现在的 index.js ` const express = require('express');常量应用程序 = 快递(); app.get('/', (req, res)=> { res.send('Welcome to K8s session') }); app.listen(8089, ()=>{ console.log('监听 8080 端口') }); `
  • 错误实际上来自您的 postgres 配置,而不是表达,如堆栈跟踪中所示。意思是host 不是 pg-promise 的有效选项。
  • 是的,但恐怕在这些文件中我现在根本没有使用 pg-promise
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 2022-01-26
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
相关资源
最近更新 更多