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

使用Kamal 2部署时,禁用kamal-proxy后如何直接暴露容器端口?

解决Kamal 2关闭proxy后容器端口无法从主机访问的配置修改方案

要让关闭kamal-proxy后的容器能被主机访问,需要修改以下配置:

1. 显式添加端口映射

在servers.web节点下新增ports配置,将容器内部的端口(你配置的PORT=3000)映射到主机的对应端口。这样主机就能通过「主机IP+映射端口」访问容器服务。

修改后的配置片段:

servers:
  web:
    hosts:
      - 127.0.0.1
    proxy: false
    ports:
      - "3000:3000"  # 格式为「主机端口:容器端口」,可根据需求调整主机端口

2. 可选:使用主机网络模式(不推荐除非必要)

如果不需要容器网络隔离,也可以将容器直接接入主机网络,此时容器端口会直接暴露在主机网络中,无需额外映射。配置方式是在servers.web下添加network_mode: host:

servers:
  web:
    hosts:
      - 127.0.0.1
    proxy: false
    network_mode: host

注意:使用主机网络模式时,容器端口不能和主机上其他服务的端口冲突,且会失去容器网络隔离的安全性。

完整修改后的配置示例

service: ngca-frontend
image: hunger1607/ngca-frontend
servers:
  web:
    hosts:
      - 127.0.0.1
    proxy: false
    ports:
      - "3000:3000"

ssh:
  keys: [~/abel-ec2-keypair.pem]
  user: ubuntu

registry:
  username:
    - DOCKER_REGISTRY_USERNAME
  password:
    - DOCKER_REGISTRY_PASSWORD

builder:
  arch:
    - amd64
  dockerfile: Dockerfile

env:
  clear:
    PORT: "3000"

原因说明

你之前仅设置proxy: false,仅关闭了Kamal自带的反向代理,但容器依然运行在Kamal创建的自定义桥接网络kamal中。该网络与主机网络默认隔离,必须通过端口映射或主机网络模式,才能让主机访问到容器内部的服务端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:57:08