我正在尝试设置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环境? (并希望指定部署中的哪一个)
答案 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