You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Curl访问Chainguard Node容器中运行的Fastify服务器

问题:基于Chainguard Node镜像的Fastify服务容器运行正常但本地无法访问

容器运行状态显示正常:

  • 服务器监听地址:http://[::1]:80
  • 进程ID:7

但访问localhost无响应,使用curl localhost也没有返回结果。


提供的代码

Dockerfile(第三阶段构建)

# ...
#  3rd part of build layer
FROM cgr.dev/chainguard/node:latest

ENV PATH=/app/node_modules/.bin:$PATH

WORKDIR /app
# /app/node_modules
COPY --from=build-deps --chown=node:node /usr/src/app . 

# /app/dist/node-server.js
COPY --from=build-dist --chown=node:node /usr/src/app/dist dist

ENV NODE_ENV=production
EXPOSE 80

ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["node", "dist/node-server.js"]

node-server.js

import Fastify from "fastify";
const server = Fastify();

server.get("/", (req, res) => {
  res.send({ message: "Success" });
});

const closeGracefully = async (signal) => {
  console.log(`Received signal to terminate: ${signal}`)
  await server.close()
  process.kill(process.pid, signal);
}
process.once('SIGINT', closeGracefully)
process.once('SIGTERM', closeGracefully)

const init = async () => {
  try {
    server.listen({ port: 80 }, (err, address) => {
      if (err) {
        console.error(err);
        process.exit(1);
      }
      console.log(`Server listening at ${address}`);
    });
    console.log(`Process id: ${process.pid}`);
  } catch (err) {
    server.log.error(err);
    process.exit(1);
  }
};

init();

问题原因与解决方法

核心问题

服务器监听的地址是[::1](IPv6回环地址),容器内部的回环地址无法被宿主机访问。在容器环境中,服务必须监听所有网络接口(0.0.0.0或::),才能让宿主机通过端口映射访问到服务。

修复步骤

修改node-server.js中的server.listen配置,添加host参数为'0.0.0.0'(同时支持IPv4和IPv6可设为'::'):

server.listen({ port: 80, host: '0.0.0.0' }, (err, address) => {
  if (err) {
    console.error(err);
    process.exit(1);
  }
  console.log(`Server listening at ${address}`);
});

验证与补充

  1. 重新构建镜像并启动容器,此时服务器会监听http://0.0.0.0:80,宿主机可通过localhost:映射端口访问(若启动容器时用了-p 80:80,直接访问localhost即可)。
  2. 确认启动容器时已正确配置端口映射,示例命令:
docker run -p 80:80 your-image-name

内容的提问来源于stack exchange,提问作者Inspiraller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 14:15:53