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

Docker部署Rails应用报错‘rails new APP_PATH [options]’服务退出码0

问题分析与解决

核心原因

容器启动时执行的命令是rails new但缺少必要参数,或是你误把创建新项目的命令当成了启动现有应用的命令——rails识别到参数不足,输出了新应用创建的用法提示,执行完后正常退出(退出码0)。

常见问题及修复步骤

1. 启动命令配置错误

如果你的目标是运行已有的Rails应用,容器启动命令应该是启动服务器的rails server -b 0.0.0.0(绑定0.0.0.0让外部能访问),而不是rails new。

  • Dockerfile修正示例:
    CMD ["rails", "server", "-b", "0.0.0.0"]
    
  • docker-compose.yml修正示例:
    services:
      web:
        # 其他配置
        command: rails server -b 0.0.0.0
    

2. 本地代码未正确挂载到容器

如果要在容器里运行本地已有的Rails项目,必须确保卷挂载配置正确,把本地项目目录映射到容器内的工作目录:

services:
  web:
    # 其他配置
    volumes:
      - .:/app  # 假设容器内工作目录是/app,本地当前目录映射过去

同时Dockerfile里要设置工作目录:

WORKDIR /app

挂载错误会导致容器内没有现有项目文件,若启动命令有误用了rails new,就会输出用法提示。

3. 误把初始化命令当启动命令

如果是想在容器里初始化新Rails项目,必须给rails new传递应用路径参数,比如:

command: rails new . --force --database=postgresql

但这是一次性操作,执行完项目创建就会退出。之后要把启动命令改成rails server -b 0.0.0.0才能运行应用。

4. 工作目录配置错误

检查Dockerfile里的WORKDIR是否指向容器内存放Rails项目的正确位置。如果工作目录为空或不存在,执行rails new时未指定路径,就会输出用法提示。

验证步骤

  1. 确认本地是否已有完整的Rails项目结构(比如Gemfile、app/文件夹)。
  2. 核对Dockerfile和docker-compose.yml里的命令、工作目录、卷挂载配置。
  3. 执行docker compose run web bash进入容器,手动运行rails server -b 0.0.0.0,排查是否有依赖问题(比如未执行bundle install)。
  4. 若是初始化新项目,先执行rails new创建项目,再修改启动命令为服务器启动指令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:47:14