在Heroku为Phoenix建立开发环境

时间:2017-05-06 05:02:27

标签: heroku deployment elixir phoenix-framework development-environment

我正在尝试设置Phoenix 1.2,以便我有两个Heroku环境:一个用于开发/测试(将保留this-app-12345.herokuapp.com网址)和标准生产环境。

目前,我以通常的方式设置我的应用程序:

mix phoenix.new my_app
cd my_app
mix ecto.create
mix ecto.migrate
git init && git add . && git commit -m "Initial commit"
heroku create

这给了我一个Heroku实例:

Creating app... done, ⬢ first-instance-12345
https://first-instance-12345.herokuapp.com/ | https://git.heroku.com/first-instance-12345.git

然后我添加buildpacks,更改config/文件并运行git push heroku master,一切正常。

现在我想创建另一个Heroku实例,我也可以部署它。如果我再次运行heroku create,我会得到:

Creating app... done, ⬢ second-instance-23456
https://second-instance-23456.herokuapp.com/ | https://git.heroku.com/second-instance-23456.git

如果我用新实例替换prod.exs中的url ...

config :my_app,  MyApp.Endpoint,
  http: [port: {:system, "PORT"}],
  url: [scheme: "https", host: "second-instance-23456.herokuapp.com", port: 443], force_ssl: [rewrite_on: [:x_forwarded_proto]],

...然后提交并运行git push heroku master,它仍将部署到first-instance-12345.herokuapp.com,这不是我想要的。

重新运行buildpack也无济于事。

$ heroku buildpacks:add https://github.com/HashNuke/heroku-buildpack-elixir
 ▸    The buildpack https://github.com/HashNuke/heroku-buildpack-elixir is already set on your app.
$ heroku buildpacks:add https://github.com/gjaldon/phoenix-static-buildpack
 ▸    The buildpack https://github.com/gjaldon/phoenix-static-buildpack is already set on your app.

是否有标准方法(或任何方法)让Phoenix部署到多个heroku环境? (并希望指定部署中的哪一个)

1 个答案:

答案 0 :(得分:1)

当然,最好的方法是在@dogbert写道时有两个不同的实例。 还要记住为heroku更改Procfile,因为你想使用不同的环境运行应用程序,例如。

# Procfile for prod
web: MIX_ENV=prod mix phoenix.server

# Procfile for dev
web: MIX_ENV=dev mix phoenix.server

对于这两种环境,您需要应用迁移:

heroku run MIX_ENV=<env> ecto.migrate