在 Heroku 中为 Phoenix Framework 设置 MIX_ENV
Setting MIX_ENV in Heroku for Phoenix Framework
我已经成功实例化了两个 Heroku 应用程序:my-app-prod 和 my-app-test。我在 Heroku 应用程序设置中配置了特定的环境变量。我在 Phoenix 中使用标准配置文件:config.exs、test.exs、prod.exs、dev.exs.
在 Heroku 中使用应用程序变量 MIX_ENV=test 配置 my-app-test 后,它仍然从 prod.exs.
加载变量
我的应用程序使用 test.exs 时是否缺少任何其他步骤?
我遵循了此处的所有说明:
https://hexdocs.pm/phoenix/heroku.html
当我 运行 git 推送时,我可以根据以下输出验证它正在使用 prod.exs。
remote: Generated my_phoenix_app_name app
remote: -----> Creating .profile.d with env vars
remote: -----> Writing export for multi-buildpack support
remote: -----> Executing post compile: pwd
remote: /tmp/build_f5b9e6e5890fcb58b9689f433c554c6a
remote: -----> Phoenix app detected
remote:
remote: -----> Loading configuration and environment
remote: Loading config...
remote: Detecting assets directory
remote: * package.json found in custom directory
remote: Will use phoenix configuration:
remote: * assets path .
remote: * mix tasks namespace phoenix
remote: Will use the following versions:
remote: * Node 5.3.0
remote: Will export the following config vars:
remote: CLIENT_ID
remote: DATABASE_URL
remote: POOL_SIZE
remote: SECRET_KEY_BASE
remote: SHOPIFY_SECRET
remote: * MIX_ENV=prod
在你的 Procfile
中写着:
web: MIX_ENV=prod mix phoenix.server
您应该可以将其更改为:
web: mix phoenix.server
因为您已经在应用程序的设置配置变量中设置了 MIX_ENV
,所以您应该可以将 MIX_ENV 部分关闭。
Elixir 的 Buildpack 正在将 MIX_ENV
设置为 prod
by default,因此您实际上不需要在 Procfile 中进行此设置。您可以简单地将其更改为:
web: mix phoenix.server
在 my-app-prod
上,您无需执行任何操作。在 my-app-test
上,只需将 MIX_ENV
设置为 test
。您可以使用命令行
heroku config:set MIX_ENV=test --app my-app-test
如果它不起作用,请尝试将您的应用程序重新部署到 Heroku。
我已经成功实例化了两个 Heroku 应用程序:my-app-prod 和 my-app-test。我在 Heroku 应用程序设置中配置了特定的环境变量。我在 Phoenix 中使用标准配置文件:config.exs、test.exs、prod.exs、dev.exs.
在 Heroku 中使用应用程序变量 MIX_ENV=test 配置 my-app-test 后,它仍然从 prod.exs.
加载变量我的应用程序使用 test.exs 时是否缺少任何其他步骤?
我遵循了此处的所有说明: https://hexdocs.pm/phoenix/heroku.html
当我 运行 git 推送时,我可以根据以下输出验证它正在使用 prod.exs。
remote: Generated my_phoenix_app_name app
remote: -----> Creating .profile.d with env vars
remote: -----> Writing export for multi-buildpack support
remote: -----> Executing post compile: pwd
remote: /tmp/build_f5b9e6e5890fcb58b9689f433c554c6a
remote: -----> Phoenix app detected
remote:
remote: -----> Loading configuration and environment
remote: Loading config...
remote: Detecting assets directory
remote: * package.json found in custom directory
remote: Will use phoenix configuration:
remote: * assets path .
remote: * mix tasks namespace phoenix
remote: Will use the following versions:
remote: * Node 5.3.0
remote: Will export the following config vars:
remote: CLIENT_ID
remote: DATABASE_URL
remote: POOL_SIZE
remote: SECRET_KEY_BASE
remote: SHOPIFY_SECRET
remote: * MIX_ENV=prod
在你的 Procfile
中写着:
web: MIX_ENV=prod mix phoenix.server
您应该可以将其更改为:
web: mix phoenix.server
因为您已经在应用程序的设置配置变量中设置了 MIX_ENV
,所以您应该可以将 MIX_ENV 部分关闭。
Elixir 的 Buildpack 正在将 MIX_ENV
设置为 prod
by default,因此您实际上不需要在 Procfile 中进行此设置。您可以简单地将其更改为:
web: mix phoenix.server
在 my-app-prod
上,您无需执行任何操作。在 my-app-test
上,只需将 MIX_ENV
设置为 test
。您可以使用命令行
heroku config:set MIX_ENV=test --app my-app-test
如果它不起作用,请尝试将您的应用程序重新部署到 Heroku。