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

如何将Heroku上的Django应用从Git部署迁移至容器部署?

如何将Heroku上Git部署的Django应用迁移到容器部署(保留PostgreSQL配置)

当然可行!我之前帮朋友处理过几乎一模一样的迁移需求,其实完全不用从零重建应用,步骤比你想象的简单很多,下面是我亲测有效的实操流程:

一、准备Docker配置文件

首先在你的本地项目根目录添加两个关键文件:

1. 创建Dockerfile

根据你的Django项目环境调整内容,下面是通用模板(记得替换成你实际的项目名称和Python版本):

# 匹配你原来Heroku使用的Python版本
FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件并安装(确保requirements.txt和原应用一致)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制整个项目代码
COPY . .

# 设置Django配置模块环境变量,和你原应用保持一致
ENV DJANGO_SETTINGS_MODULE=your_django_project.settings.production

# 执行数据库迁移和静态文件收集(如果你的应用需要的话)
RUN python manage.py migrate
RUN python manage.py collectstatic --noinput

# 用Gunicorn启动服务,和原Heroku配置一致
CMD ["gunicorn", "--bind", "0.0.0.0:$PORT", "your_django_project.wsgi"]

2. 创建.dockerignore

避免复制不必要的文件到镜像里,内容参考:

.git
.gitignore
venv
__pycache__
*.pyc
*.pyo
*.pyd
.env

二、关联Heroku容器注册表

确保你本地已经安装了Heroku CLI,然后执行以下命令:

  • 登录Heroku账号:
    heroku login
  • 登录Heroku容器注册表:
    heroku container:login

三、部署容器到现有应用

这一步是核心!直接用你原来的Django应用名称,不用新建应用:

  • 构建并推送镜像到Heroku:
    heroku container:push web --app your-existing-app-name
  • 发布镜像让应用生效:
    heroku container:release web --app your-existing-app-name

四、验证迁移结果

  • 因为用的是原应用,PostgreSQL的DATABASE_URL等配置环境变量会自动保留,你可以通过以下命令测试数据库连接:
    heroku run python manage.py shell --app your-existing-app-name
  • 访问你的应用URL,确认所有功能和之前一致
  • 如果有其他Heroku插件(比如Redis、存储服务),它们的配置也会保留,只要Dockerfile没覆盖相关环境变量就没问题

一些额外提示

  • 如果不确定原应用的依赖列表,可以用heroku run pip freeze --app your-existing-app-name导出,确保requirements.txt完全匹配
  • 要是部署时遇到静态文件问题,检查collectstatic命令是否正确,以及Django的静态文件配置是否和原应用一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:59:38