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

部署Django项目至Railway时遭遇Docker构建失败问题

Django项目部署Railway构建失败排查方案

一、聚焦构建阶段核心问题(pip安装失败)

你的Docker构建失败在pip install -r requirements.txt步骤,exit code 1,优先排查以下几点:

  • 校验requirements.txt文件:确认文件存在于项目根目录、文件名无拼写错误,打开文件检查所有包版本是否兼容Django 4.2.6。比如mysqlclient依赖MySQL开发库,Railway默认构建环境未预装,会导致编译失败。
  • 添加系统依赖到Dockerfile:若使用mysqlclient,在第20行前插入系统依赖安装命令:
    RUN apt-get update && apt-get install -y default-libmysqlclient-dev gcc
    
  • 优化虚拟环境pip调用方式:Docker的RUN命令是独立shell,直接指定虚拟环境的pip路径更可靠,修改第20行:
    RUN --mount=type=cache,id=s/585223ec-cc75-4dcd-9f98-7ab08bb3e77f-/root/cache/pip,target=/root/.cache/pip \
        python -m venv --copies /opt/venv && \
        /opt/venv/bin/pip install -r requirements.txt
    

二、修正Settings.py配置(提前规避部署后运行问题)

这些问题不直接导致构建失败,但会引发后续运行错误:

  • 修复静态文件配置:你重复赋值STATIC_URL且混淆了STATIC_ROOT和STATIC_URL,修改为:
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')  # 注意是STATIC_ROOT而非STATIC_URL
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    
  • 适配Railway数据库服务:Railway通过环境变量注入数据库连接信息,不要硬编码本地配置,修改数据库部分:
    import os
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': os.getenv('MYSQL_DATABASE'),
            'USER': os.getenv('MYSQL_USER'),
            'PASSWORD': os.getenv('MYSQL_PASSWORD'),
            'HOST': os.getenv('MYSQL_HOST'),
            'PORT': os.getenv('MYSQL_PORT', '3306'),
        }
    }
    
    之后在Railway项目的变量面板添加对应MySQL环境变量(创建MySQL服务后会自动生成)。

三、额外排查动作

  • 本地执行pip install -r requirements.txt,确认包能正常安装,排除包本身的问题。
  • 检查项目根目录的.dockerignore文件,确保未忽略requirements.txt或必要的项目文件。

内容的提问来源于stack exchange,提问作者Rodrigo de Brito Franco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:02:28