【问题标题】:404 Error when sending POST requests to API in Docker Container向 Docker 容器中的 API 发送 POST 请求时出现 404 错误
【发布时间】:2020-08-17 14:55:06
【问题描述】:

我正在尝试在 docker 容器中设置 API,每当我发送 HTTP POST 请求时,它都会失败并出现 404 错误。有趣的是,当我使用 nodemon 运行 API 时,它工作得非常好。

我正在使用命令 docker run -p 8080:8080 IMAGE 来运行 API。

这是发布请求和控制器的路由。

router.post('/', linux_aps_controller.linux_aps_send_log);

exports.linux_aps_send_log = (req, res, next) => {
const log_to_send = new Linux_APS({
    _id: new mongoose.Types.ObjectId(),
    device_id: req.body.device_id
});
log_to_send
    .save()
    .then(result => {
        console.log(result),
        res.status(201).json({
            message: 'Created new Linux APS log successfully',
            createdLog: {
                _id: result._id,
                device_id: result.device_id,
                request: {
                    type: 'GET',
                    url: process.env.LINUX_ENDPOINT + result._id
                }
            }
        });
    })
    .catch(err => {
        console.log(err);
        res.status(500).json({
            error: err
        });
    });

}

【问题讨论】:

    标签: node.js docker post httprequest


    【解决方案1】:

    没有看到 dockerfile 本身(以及你的其他代码,是 node/express 吗?),很难判断这里出了什么问题。

    尝试使用不同的基础映像,例如 node:12.17,请参阅以下示例:

    FROM node:12.17.0 
    
    WORKDIR /app
    
    COPY package.json .
    
    RUN npm install
    
    COPY . .
    
    EXPOSE 8080
    
    CMD ["node", "app.js"]
    

    【讨论】:

      【解决方案2】:

      不确定它是否相关,但我也遇到了 Docker 容器中的 python 脚本无法调用 API 端点的问题。我发现这是由于我的 Dockerfile 中的代理设置造成的。我在需要代理才能访问 Internet 的公司 Intranet 上。我试图访问的 API 也在 Intranet 上。在我的 Docker 文件中,我必须指定我尝试访问的 API 主机名:

      ENV NO_PROXY = .intranet.net

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-03
        • 1970-01-01
        • 2022-07-07
        • 2020-11-20
        • 2021-12-21
        • 1970-01-01
        • 2014-12-04
        相关资源
        最近更新 更多