1

Phoenix 1.2를 설정하여 두 가지 Heroku 환경을 갖출려고합니다. dev/testing (this-app-12345.herokuapp.com URL을 유지), 및 표준 프로덕션 환경을 제공합니다.Phoenix 용 Heroku에서 dev 환경 빌드하기

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

내가 다음 config/ 파일을 변경 buildpacks를 추가하고 git push heroku master을 실행 :

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가 인스턴스를 제공합니다

현재, 나는 일반적인 방법을 내 응용 프로그램 설정 모든 것이 작동합니다.

이제 다른 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 애플리케이션에 앱을 배포하는 표준 방법은 여러 원격을 repo에 추가하고 배포 할 위치로 푸시하는 것입니다. 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 

지금은 사용 첫 번째로 배포 할 수 있습니다 확실히

$ git push second master 
+0

을 원격 : npm ERR! addLocal/tmp/build_281dbc927c24aa3bb5ad67f310924ca2/deps/phoenix를 설치할 수 없습니다. remote : npm ERR! enoent 이것은 npm 자체에서 문제가되지 않을 가능성이 높습니다. remote : npm ERR! enoent이고 npm과 관련된 파일을 찾을 수 없습니다. " ... 중간 단계가 있습니까? –

+0

'remote : - package.json'에 노드 버전이 지정되지 않았습니다 .' .... "engines": { "npm": "7.6.0"}'을 추가했지만 아무 소용이 없습니다. –

+0

새로운 (두 번째) 리모컨에서만 발생합니까? 두 번째 앱에 모든 buildpack을 추가해보십시오 :'heroku buildpacks : add --app second-instance-23456 https : //github.com/...'(마치'--app '인수)를 누른 다음 다시 누르십시오. – Dogbert

1

다음은 두 개의 리모컨을 추가하는 방법 그렇게하는 가장 좋은 방법은 @dogbert가 쓴 것처럼 두 개의 다른 인스턴스를 갖는 것입니다. 다른 환경을 사용하여 앱을 실행하려는 경우에도 heroku 용 Procfile을 변경하는 것을 잊지 마십시오. 두 환경의

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

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

는 마이그레이션 적용해야합니다 : `원격 : -----> 건물 종속성 원격 : 설치 노드 모듈 (package.json) 이 점점

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

두 개의 heroku 앱, foo와 bar가 있다고 가정 해보자. 각각은 자신의'app-name-12345.herokuapp.com' 주소가 있고'git push foo | bar master'로 푸시합니다. Heroku는 foo와 bar로만 그것들을 알고 있습니다; 그 중 하나가 개발/준비 또는 생산인지에 대한 개념이 없습니다. 그게 Procfile에 표시됩니까? –

+0

예, Procfile은 heroku에게 어떤 명령을 호출해야하는지 알려주는 데 사용됩니다. 이 경우 MIX_ENV 변수로 env를 제어합니다. – PatNowak