다른 Heroku 앱에서 앱 데이터베이스에 액세스하고 싶습니다. 공유 데이터베이스에서 가능합니까?
답변:
업데이트 됨
원래이 답변은 몇 가지 트릭으로 가능했지만 강력히 권장하지 않는다고 말했습니다 . 이것은 Heroku 개발자 지원 웹 사이트의 조언을 기반으로합니다. 그러나 최근 Heroku는이를 달성하는 방법을 구체적으로 설명하는 통신문을 발행했으며 개발자 사이트에서 조언을 제공했습니다. 이 이메일 섹션의 전체 텍스트는 다음과 같습니다.
Heroku 앱이 공통 데이터베이스를 공유 할 수 있다는 것을 알고 계셨습니까? 예를 들어 사용자 용 코드와는 별도의 애플리케이션에 분석 기능을 배치 할 수 있습니다.
여러 앱의 DATABASE_URL 구성 변수를 동일한 값으로 설정하기 만하면됩니다. 먼저 기존 앱의 DATABASE_URL을 가져옵니다.
$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute1.amazonaws.com/ldfoiusfsf
그런 다음 새 앱의 DATABASE_URL을 다음 값으로 설정합니다.
$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74. That's it
— 이제 두 앱이 하나의 데이터베이스를 공유합니다.
참고로 Heroku의 원래 조언은 API를 생성하고 사용하여 원격으로 데이터에 액세스하는 것이 었습니다. 제 개인적인 견해는 전반적으로 많은 상황에서 이것은 좋은 조언입니다 (즉, 동일한 DB에 여러 응용 프로그램을 연결하는 것보다 낫습니다). 가치가있는 것보다 더 문제가되는 상황을 볼 수 있습니다.
최신 정보
이 답변에 대한 의견에 따라 Heroku는 필요에 따라 데이터베이스 URL을 변경할 권리가 있음을 주목할 가치가 있습니다. 이 경우 보조 연결이 실패하므로 그에 따라 URL을 업데이트해야합니다.
관련 질문에 대한 최신 답변!
Heroku는 이제 애드온 프레임 워크를 통해 더 나은 / 우아한 솔루션을 공식적으로 지원합니다. 앱간에 애드온을 공유하는 방법에 대한 최신 뉴스 레터에 설명되어 있습니다. 다음은이 글에서 언급 된 스 니펫입니다.
$ heroku addons:attach my-sushi-db -a my-sushi-reporting --as MAIN_SUSHI_DB
Adding MAIN_SUSHI_DB to my-sushi-reporting... done
Setting MAIN_SUSHI_DB vars and restarting my-sushi-app-reporting... done, v3
heroku addons:attach originating_app_name::HEROKU_POSTGRESQL_COLOR_URL -a no_db_app_name
내가 아는 한 가능한 한 DB로 앱의 heroku 구성 변수를 살펴본 다음 데이터베이스를 공유하려는 앱에서 database_url을 동일한 값으로 설정해야합니다. 그래도 조금 벗어 났고 어떻게 지원되는지 모르겠습니다.
편집 마음을 쉬게하기 위해 Heroku에서 제목이있는 간단한 비계 '포스트'라는 두 개의 앱을 만들었습니다.
http://evening-spring-734.heroku.com/posts 가 마스터입니다.
http://electric-galaxy-230.heroku.com/posts- 노예입니다
따라서 둘 중 하나에 작성된 게시물은 저녁 봄 734의 데이터베이스 URL에 기록됩니다.
내가 한 것은 heroku 구성을 사용하여 저녁 봄 -734의 DATABASE_URL을 가져온 다음 electric-galaxy-230의 DATABASE_URL에 동일한 값을 설정하는 것입니다.
결실을 맺은 DB 경쟁 조건으로 끝날 수는 있지만 확실히 가능합니다.
매직 응?
최근에 Heroku 뉴스 레터에서 이것을 받았습니다. 실제로 승인 된 사용인지 확인하기 위해 이메일을 보냅니다.
알고 계셨습니까?
하나의 데이터베이스를 여러 앱과 공유
Heroku 앱이 공통 데이터베이스를 공유 할 수 있다는 것을 알고 계셨습니까? 예를 들어 사용자 용 코드와는 별도의 애플리케이션에 분석 기능을 배치 할 수 있습니다.
여러 앱 의
DATABASE_URL
구성 변수 를 동일한 값으로 설정하기 만하면됩니다 . 먼저DATABASE_URL
기존 앱을 가져옵니다 .
$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf
그런 다음
DATABASE_URL
새 앱용을 다음 값으로 설정합니다 .
$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74.
이제 두 앱이 하나의 데이터베이스를 공유합니다.
Heroku 참조 참조 : https://devcenter.heroku.com/categories/heroku-postgres
Q : 여러 Heroku 애플리케이션을 단일 데이터베이스에 연결할 수 있습니까?
예. 데이터베이스 자격 증명이있는 경우 Heroku에서 실행되는 여러 애플리케이션을 단일 데이터베이스에 연결하도록 구성 할 수 있습니다. heroku config : add DATABASE_URL = ... 명령을 사용하여 연결하려는 앱의 DATABASE_URL을 재정의하면됩니다.