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

使用docker-compose启动容器后,主机无法访问容器内服务

问题解决:Docker Compose端口映射失效的原因与修复

问题根源

docker-compose run命令默认不会加载docker-compose.yml中定义的ports端口映射配置——它的设计初衷是临时运行服务、执行一次性命令,默认不绑定端口到主机,这就是你启动Rails服务器后主机无法访问的原因。

修复方案

方案1:保留交互模式,启用服务端口映射

执行docker-compose run时添加--service-ports参数,强制加载配置中的端口映射规则:

docker-compose run --service-ports some_app

进入容器终端后执行rails s -b 0.0.0.0,主机即可通过localhost:3000正常访问应用。

方案2:改用docker-compose up启动(更符合Compose常规用法)

修改你的docker-compose.yml,添加command指令让容器启动时自动启动Rails服务器:

services:
  some_app:
    build: .
    ports:
      - "3000:3000"
      - "3306:3306"
    stdin_open: true
    tty: true
    command: ["rails", "s", "-b", "0.0.0.0"]

然后执行启动命令:

docker-compose up --build

容器启动后会自动运行Rails服务器,无需手动进入终端执行命令,主机直接访问localhost:3000即可。

如果不想修改配置文件,也可以临时指定启动命令:

docker-compose up --build --command "rails s -b 0.0.0.0" some_app

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:54:57