2012-03-21 8 views
10

Quiero que la joya del capataz use el valor PORT proporcionado en el archivo my env de env en lugar de usar sus propios valores. Mi configuración de archivos se muestra a continuación:¿Por qué la gema del capataz ignora la variable de entorno PORT?

  1. un script bash para iniciar capataz:

    capataz comienzan development.env -e

  2. El contenido del archivo development.env:

    PORT = 3000

  3. El contenido del archivo

    web: carriles exec paquete de servidor -p -e delgada $ PORT $ RAILS_ENV $ 1

El servidor dev acaba de comenzar en el puerto 5000. Sé que puedo comenzar capataz con -P 3000 para forzarlo a utilizar ese puerto. Pero eso frustra el propósito del archivo env.

¿Alguna sugerencia?

Respuesta

10

Sé que esta es una publicación anterior, pero me tomó un tiempo darme cuenta, así que podría agregar una nota aquí.

Foreman incrementa el PUERTO en función de dónde defina el servicio en el archivo de proceso.

decir que nuestra variable de entorno puerto se establece en 3000.

En nuestro primer ejemplo Procfile Puma se ejecutará en el puerto 3000:

web: bundle exec puma -q -p $PORT 
worker: bundle exec rake jobs:work 

Sin embargo, en nuestro segundo Procfile que se ejecutará en 3100 como el PUERTO La variable PORT se usa en la segunda línea.

worker: bundle exec rake jobs:work 
web: bundle exec puma -q -p $PORT 

No estoy seguro de por qué, supongo que para evitar que los diferentes procesos intenten tomar el mismo PUERTO.

+2

¡Tricky! Muchas gracias por publicar su solución. –

Cuestiones relacionadas