Heroku 发布部分覆盖发布过程
Heroku release section overrides release process
我有以下 heroku.yml
容器部署文件:
build:
docker:
release:
dockerfile: Dockerfile
target: release_image
web: Dockerfile
config:
PROD: "True"
release:
image: web
command:
- python manage.py collectstatic --noinput && python manage.py migrate users && python manage.py migrate
run:
# web: python manage.py runserver 0.0.0.0:$PORT
web: daphne config.asgi:application --port $PORT --bind 0.0.0.0 -v2
celery:
command:
- celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info
image: web
celery_beat:
command:
- celery --app=my_app beat -l info
image: web
当我部署时,我收到以下警告,这对我来说没有任何意义:
Warning: You have declared both a release process type and a release section. Your release process type will be overridden.
我的 Dockerfile
由两个阶段组成,我只想保留 release_image
阶段:
FROM python:3.8 as builder
...
FROM python:3.8-slim as release_image
...
根据 docs 选择 release_image
的正确方法是使用 build
步骤中的 target
部分。
但它也 mentions 我可以 运行 我在 release
部分中的迁移。
那么我应该怎么做才能摆脱这个警告? 只有当我的 migrations
和 target
正在 deploy.Thanks 期间提前考虑!
I want to keep only the release_image
stage
假设您的 web
流程也是如此,请相应地更新您的 build
部分:
build:
docker:
web:
dockerfile: Dockerfile
target: release_image
config:
PROD: "True"
现在您只定义了一种流程类型,它针对您要使用的构建阶段。
由于您可以 运行 从 web
容器进行迁移,因此无需为 Heroku release
进程构建整个容器。 (并且由于您的 release
部分使用 web
图像,因此 build
中定义的 release
过程无论如何都不会用于任何使用。)
我有以下 heroku.yml
容器部署文件:
build:
docker:
release:
dockerfile: Dockerfile
target: release_image
web: Dockerfile
config:
PROD: "True"
release:
image: web
command:
- python manage.py collectstatic --noinput && python manage.py migrate users && python manage.py migrate
run:
# web: python manage.py runserver 0.0.0.0:$PORT
web: daphne config.asgi:application --port $PORT --bind 0.0.0.0 -v2
celery:
command:
- celery --app=my_app worker --pool=prefork --concurrency=4 --statedb=celery/worker.state -l info
image: web
celery_beat:
command:
- celery --app=my_app beat -l info
image: web
当我部署时,我收到以下警告,这对我来说没有任何意义:
Warning: You have declared both a release process type and a release section. Your release process type will be overridden.
我的 Dockerfile
由两个阶段组成,我只想保留 release_image
阶段:
FROM python:3.8 as builder
...
FROM python:3.8-slim as release_image
...
根据 docs 选择 release_image
的正确方法是使用 build
步骤中的 target
部分。
但它也 mentions 我可以 运行 我在 release
部分中的迁移。
那么我应该怎么做才能摆脱这个警告? 只有当我的 migrations
和 target
正在 deploy.Thanks 期间提前考虑!
I want to keep only the
release_image
stage
假设您的 web
流程也是如此,请相应地更新您的 build
部分:
build:
docker:
web:
dockerfile: Dockerfile
target: release_image
config:
PROD: "True"
现在您只定义了一种流程类型,它针对您要使用的构建阶段。
由于您可以 运行 从 web
容器进行迁移,因此无需为 Heroku release
进程构建整个容器。 (并且由于您的 release
部分使用 web
图像,因此 build
中定义的 release
过程无论如何都不会用于任何使用。)