仅在发布阶段指定环境变量
Specify environment variable only in release phase
我正在尝试使用 Heroku's "container"
stack for Review Apps,但我在指定仅影响发布阶段的环境变量(或配置变量,用 Heroku 的说法)时遇到问题。
我的第一次尝试是在我的 heroku.yml
文件中的 release.config
键下指定环境变量:
build:
docker:
web: Dockerfile.web
worker: Dockerfile.worker
release:
image: web
command:
- mix ecto.migrate
config:
POOL_SIZE: 2
run:
web:
command:
- mix phx.server
worker:
command:
- mix worker
然而,这导致了 Heroku 的以下构建错误:
release.config in body is a forbidden property
我随后的做法是将我的 Dockerfile.web
复制到 Dockerfile.release
,将 Dockerfile.release
内的环境变量指定为 ENV POOL_SIZE=2
,并相应地更新我的 heroku.yml
:
build:
docker:
web: Dockerfile.web
worker: Dockerfile.worker
release: Dockerfile.release
release:
command:
- mix ecto.migrate
run:
web:
command:
- mix phx.server
worker:
command:
- mix worker
这导致了一个对我来说意义不大的错误:
Warning: You have declared both a release process type and a release section. Your release process type will be overridden.=!= Couldn't find the release image configured for this app. Is there a matching run process?
是否可以为 Heroku 的发布阶段指定一个环境变量?如果有,是怎么做到的?
我最终通过修改 heroku.yml
的 release
部分实现了我想要的:
release:
command:
- /usr/bin/env POOL_SIZE=2 mix ecto.migrate
我相信如果我的 Dockerfile 中的 ENTRYPOINT
是 /usr/bin/env
,那部分可能会被忽略。
回到单独的 Dockerfile 方法(由于不相关的原因我最终不得不切换到它),解决方法是将 Dockerfile.release
中的 CMD
更改为 mix ecto.migrate
并删除 heroku.yml
文件的 release
部分。
我正在尝试使用 Heroku's "container"
stack for Review Apps,但我在指定仅影响发布阶段的环境变量(或配置变量,用 Heroku 的说法)时遇到问题。
我的第一次尝试是在我的 heroku.yml
文件中的 release.config
键下指定环境变量:
build:
docker:
web: Dockerfile.web
worker: Dockerfile.worker
release:
image: web
command:
- mix ecto.migrate
config:
POOL_SIZE: 2
run:
web:
command:
- mix phx.server
worker:
command:
- mix worker
然而,这导致了 Heroku 的以下构建错误:
release.config in body is a forbidden property
我随后的做法是将我的 Dockerfile.web
复制到 Dockerfile.release
,将 Dockerfile.release
内的环境变量指定为 ENV POOL_SIZE=2
,并相应地更新我的 heroku.yml
:
build:
docker:
web: Dockerfile.web
worker: Dockerfile.worker
release: Dockerfile.release
release:
command:
- mix ecto.migrate
run:
web:
command:
- mix phx.server
worker:
command:
- mix worker
这导致了一个对我来说意义不大的错误:
Warning: You have declared both a release process type and a release section. Your release process type will be overridden.=!= Couldn't find the release image configured for this app. Is there a matching run process?
是否可以为 Heroku 的发布阶段指定一个环境变量?如果有,是怎么做到的?
我最终通过修改 heroku.yml
的 release
部分实现了我想要的:
release:
command:
- /usr/bin/env POOL_SIZE=2 mix ecto.migrate
我相信如果我的 Dockerfile 中的 ENTRYPOINT
是 /usr/bin/env
,那部分可能会被忽略。
回到单独的 Dockerfile 方法(由于不相关的原因我最终不得不切换到它),解决方法是将 Dockerfile.release
中的 CMD
更改为 mix ecto.migrate
并删除 heroku.yml
文件的 release
部分。