【问题标题】:Heroku release phase commands are not executedHeroku 发布阶段命令未执行
【发布时间】:2021-10-22 19:29:27
【问题描述】:

我尝试使用构建清单在 heroku 上部署 django 应用程序。应用似乎部署正确,但发布阶段的命令似乎没有执行。

这是我的 heroku.yml:

build:
  docker:
    web: Dockerfile
release:
  image: web
  command:
    - python manage.py migrate
    - python manage.py collectstatic --noinput
run:
  web: gunicorn hello_django.wsgi:application --bind 0.0.0.0:$PORT

这是我的 Dockerfile:

FROM python:3.9-slim

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONBUFFERED 1

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        postgresql-client \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app

# install dependencies
RUN pip install --upgrade pip
COPY requirements.txt ./
RUN pip install -r requirements.txt

# copy source code to container
COPY ./src .

# create directory for statics
RUN mkdir staticfiles

发布阶段指定的命令不执行。我知道,因为数据库没有被迁移并且 staticfiles 目录是空的。我也知道我的应用程序的其余部分实际上配置正确,因为当我在最后的 Dockerfile 中包含这一行时:

RUN python manage.py collectstatic

然后收集静态数据并运行应用程序。

我还使用以下命令安装了插件heroku-manifestheroku plugins:install @heroku-cli/plugin-manifest 并使用heroku stack:set container -a <app name> 将我的应用程序的堆栈设置为容器

我错过了什么?

更新

实际上似乎执行了migrate 命令,但没有执行collectstatic。这是为什么呢?

【问题讨论】:

    标签: python django docker heroku


    【解决方案1】:

    我遇到了同样的问题,并提出了部分解决方案。通过使用&& 命令,我能够运行collectstatic 命令。这是您的heroku.yml 文件的外观。

    build:
      docker:
        web: Dockerfile
    release:
      image: web
      command:
        - python manage.py migrate && python manage.py collectstatic --noinput
    run:
      web: gunicorn hello_django.wsgi:application --bind 0.0.0.0:$PORT
    

    我的猜测是只允许一个命令,但这只是一个猜测。我在 heroku 上查看了 release 的文档,但没有说这样的话。尽管在他们的示例中只使用了一个命令。

    无论如何,使用&& 对我有用,我可以从发布日志中看到collectstatic 命令已执行。

    ***然而 即使执行了collectstatic 命令,我的最新版本也没有包含我所做的任何样式更改。所以在将代码推送到 Heroku 之前,我仍然不得不运行 collectstatic。对于如何将收集静态步骤添加到自动化工作流程中,我仍然没有解决方案。也许 github 操作会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 2021-06-05
      • 1970-01-01
      • 2019-09-04
      • 2018-09-30
      相关资源
      最近更新 更多