Puesta en escena instancia en Heroku
-
16-09-2019 - |
Pregunta
Me gustaría ser capaz de empujar a dev.myapp.com
código para la prueba y luego a www.myapp.com
para uso en producción. ¿Es esto posible con Heroku?
Solución
Su interfaz para Heroku es esencialmente una rama Git. La gema Heroku hace algún trabajo a través de su API, pero dentro de su repositorio Git, es sólo una nueva rama remota.
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
Una vez que configure varias aplicaciones en Heroku, usted debe ser capaz de configurar su repositorio Git como esto:
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
Por lo general trabajo en una rama de 'trabajo', y el uso de Github para mi maestro.
Si se asume que es el caso para usted, su flujo de trabajo de despliegue, probablemente algo como:
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
Otros consejos
Esto explica todo lo que necesita saber si eres un novato como yo: http://devcenter.heroku.com/articles / múltiples-ambientes
Una parte clave de la pregunta original se trata de vincular la aplicación puesta en escena a un subdominio (dev.myapp.com) de la aplicación principal (www.myapp.com). Esto no se ha abordado en ninguna de las respuestas.
Paso 1: Configurar las dos versiones de la aplicación de producción ( 'miaplicacion') y estadificación ( 'estadificación-miaplicacion') como se indica en la respuesta de Luke Bayes
Paso 2: En su sistema de gestión de dominio (por ejemplo GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Paso 3: Configurar Heroku para enrutar dev.myapp.com a la estadificación-miaplicacion:
heroku domains:add dev.myapp.com --app staging-myapp
Después de que el registro CNAME ha tenido tiempo para propagar, usted será capaz de ejecutar su aplicación en la puesta en escena dev.myapp.com.
Se debe comprobar el heroku_san
Se hace un muy buen trabajo con entornos malabares en heroku.
Las cosas son más fáciles ahora. He aquí cómo lo haces ...
Crear una aplicación para cada entorno
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Esto creará llamado repositorios remotos para cada aplicación, que se puede ver en .git/config
.
Ahora puede utilizar el - aplicación o - remotos interruptores para apuntar a una aplicación en particular:
$ heroku info --app myapp-staging
$ heroku info --remote staging
entornos Set Rails
Para aplicaciones Rails, Heroku a la "producción" entorno . Si desea que su aplicación puesta en escena para funcionar en un entorno de ensayo, crear el ambiente en su proyecto y establecer el correspondiente RAILS_ENV y RAKE_ENV variables de entorno en la aplicación:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Configurar entornos
Si usted tiene otras variables de configuración que tendrá que pasar en cada medio ambiente.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
Esto es un dolor enorme, aunque por lo que sólo uso mi snappconfig joya y corro
$ rake heroku:config:load[myapp-staging]
para cargar archivos de configuración YAML de mi proyecto en Heroku.
Distribuir
Ahora sólo tiene que presionar a Heroku como esto:
$ git push staging master
$ git push production master
y migrar como esto:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(Ver Gestión de varios entornos para una aplicación |. Heroku Dev Center para obtener más información y los accesos directos)