1

Phoenix 1.2をセットアップして、私が2つのHeroku環境を持つようにしようとしています:dev/testing(これはthis-app-12345.herokuapp.com URLを保持します)標準のプロダクション環境を提供します。Phoenix用のHerokuで開発環境を構築する

現在、私は通常の方法を私のアプリを設定します。

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インスタンスを作成したいと思います。私は、新しいインスタンスとprod.exsでURLを交換する場合...

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

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を実行します。私は再びheroku createを実行すると、私が手最初のインスタンスにはまだ12345.herokuapp.comに展開されますが、これは私が望むものではありません。

ビルドパックを再実行することは役に立ちません。

$ 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. 

フェニックスを複数のヒーロー環境に展開する標準的な方法(または方法)はありますか? (そしてうまくいけば、デプロイするアプリケーションを指定してください)

答えて

1

複数のHerokuアプリケーションにアプリケーションをデプロイする標準的な方法は、複数のリモートをレポに追加し、デプロイするものにプッシュすることです。その変更をconfig/prod.exsにすることは、アプリの配備場所には影響しません。使用

$ git push first master 

と第二に::

$ git remote add first https://git.heroku.com/first-instance-12345.git 
$ git remote add second https://git.heroku.com/second-instance-23456.git 

は、今あなたが使用して最初の1に展開することができます:確かに

$ git push second master 
+0

この行き方:: 'リモート:----->ビルの依存関係 リモート:インストールノードモジュール(package.json) を使用すると、マイグレーションを適用する必要があり、両方の環境では

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

リモート:npm ERR! addLocalインストールできませんでした/ tmp/build_281dbc927c24aa3bb5ad67f310924ca2/deps/phoenix リモート:npm ERR! enoentこれはnpm自身にとって問題ではない可能性が最も高いです remote:npm ERR! nockがファイルを見つけることができないことに関連しています。 ...中間ステップはありますか? –

+0

'remote: - package.json'でノードのバージョンが指定されていません。....' 'エンジン '' {" npm ":" 7.6.0 "}'を追加しました。 –

+0

これは新しい(2番目の)リモートでのみ発生しますか? 'heroku buildpacks:add --app second-instance-23456 https://github.com/...'( '--app 'を使わないで最初のものと同じように) '引数)し、再度押します。 – Dogbert

1

は、ここでは、2つのリモコンを追加する方法ですこれを行う最善の方法は、@ dogbertが書いた2つの異なるインスタンスを持つことです。 また、herokuのProcfileを変更することについて覚えておいてください。異なる環境を使用してアプリを実行したいからです。

heroku run MIX_ENV=<env> ecto.migrate 
+0

私は2つのヒーローアプリ、fooとbarを持っていて、それぞれが独自の 'app-name-12345.herokuapp.com'アドレスを持っていて、' git push foo | bar master'を押してみましょう。 Herokuはfooとbarとしてそれらを知っているだけです。それは開発/ステージングか生産かの概念を持っていません。それはProcfileに表示されますか? –

+0

はい、Procfileはどのコマンドを呼び出すべきかをherokuに伝えるために使われます。この場合、MIX_ENV変数を使用してenvを実行するように制御します。 – PatNowak

関連する問題