Промежуточный экземпляр на Heroku
-
16-09-2019 - |
Вопрос
Я бы хотел иметь возможность отправлять код в dev.myapp.com
для тестирования, а затем для www.myapp.com
для производственного использования.Возможно ли это с Heroku?
Решение
Ваш интерфейс к Heroku — это, по сути, ветка Git.Гем Heroku выполняет некоторую работу через свой API, но в вашем репозитории Git это просто новая удаленная ветка.
heroku create yourapp # production
git br -D heroku # delete the default branch
heroku create staging-yourapp # staging
git br -D heroku # delete the default branch
После того, как вы настроите несколько приложений на Heroku, вы сможете настроить свой репозиторий Git следующим образом:
git remote add staging git@heroku.com:staging-yourapp.git
git push origin staging
git remote add production git@heroku.com:yourapp.git
git push origin production
Обычно я работаю в «рабочей» ветке и использую Github в качестве мастера.
Если предположить, что это так, ваш рабочий процесс развертывания, вероятно, будет выглядеть примерно так:
git co -b working
# do some work
# push to github:
git co master
git merge working
git push
# push to staging:
git co staging
git merge master
git push origin staging
# push to production
git co production
git merge master
git push origin production
Другие советы
Это объясняет все, что вам нужно знать, если вы новичок, как я: http://devcenter.heroku.com/articles/multiple-environments
Ключевая часть исходного вопроса касается привязки промежуточного приложения к поддомену (dev.myapp.com) основного приложения (www.myapp.com).Это не было рассмотрено ни в одном из ответов.
Шаг 1:Настройте как производственную («myapp»), так и промежуточную («staging-myapp») версии вашего приложения, как указано в ответе Люка Байеса.
Шаг 2:В вашей системе управления доменом (например.ГоДадди):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Шаг 3:Настройте Heroku для маршрутизации dev.myapp.com к staging-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
После того, как запись CNAME успеет распространиться, вы сможете запустить промежуточное приложение на dev.myapp.com.
Вам следует проверить геройку_сан
Он неплохо справляется с манипуляцией окружением на Heroku.
Теперь все стало проще.Вот как вы это делаете...
Создайте приложение для каждой среды
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Это создаст именованные удаленные репозитории для каждого приложения, которые вы можете увидеть на .git/config
.
Теперь вы можете использовать либо --приложение или --дистанционный переключается на конкретное приложение:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Настройка среды Rails
Для приложений Rails, Heroku по умолчанию используется "производственная" среда.Если вы хотите, чтобы ваше промежуточное приложение работало в промежуточной среде, создайте окружающую среду в вашем проекте и установите соответствующий RAILS_ENV ( РЕЛЬСЫ ) и RAKE_ENV переменные среды в приложении:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Настройка сред
Если у вас есть другие переменные конфигурации, вам также нужно будет передать их для каждой среды.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
Однако это огромная боль, поэтому я просто использую свой snappconfig ( привязка) драгоценный камень и беги
$ rake heroku:config:load[myapp-staging]
чтобы загрузить конфигурационные файлы YAML моего проекта в Heroku.
Развернуть
Теперь ты просто нажимаешь на Heroku вот так:
$ git push staging master
$ git push production master
и мигрируйте вот так:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(См. Управление несколькими средами для приложения | Heroku Dev Center для получения дополнительной информации и ярлыков.)