Scala Слушать 2.2 сбой приложений после развертывания в Heroku: target/start Нет такого файла или каталога
Я боролся с этим в течение нескольких часов, и я не могу понять, почему после развертывания моего приложения Scala Play 2.2 в Heroku я получаю этот стек:
2013-09-30T01:05:09.413177+00:00 heroku[web.1]: Starting process with command `target/start -Dhttp.port=18174 $PLAY_OPTS`
2013-09-30T01:05:10.931893+00:00 app[web.1]: bash: target/start: No such file or directory
2013-09-30T01:05:12.382399+00:00 heroku[web.1]: Process exited with status 127
2013-09-30T01:05:12.414050+00:00 heroku[web.1]: State changed from starting to crashed
Я пробовал несколько версий Procfile без каких-либо успехов, некоторые примеры:
web: target/start -Dhttp.port=$PORT
web: target/start -Dhttp.port=$PORT $PLAY_OPTS
web: target/start -Dhttp.port=$PORT $JAVA_OPTS
web: target/start Web -Dhttp.port=$PORT $PLAY_OPTS
web: target/start -Dhttp.port=$PORT $PLAY_OPTS -Dconfig.file=application.conf
web: target/start -Dhttp.port=$PORT $PLAY_OPTS -Dconfig.file=conf/application.conf
Я даже попытался использовать Procfile.
Я использую Scala 2.10.2 и Play 2.2. В том же приложении Heroku у меня была предыдущая версия моего проекта, запущенного в Play 2.0, я не знаю, связано ли это.
Приложение работает отлично на месте. Я подключился к bash в Heroku и запустил
sbt clean
sbt stage
и я проверил, что цель очищается и строится снова.
Что означает "цель/старт: нет такого файла или каталога"? К цели? К началу команды? Что-то еще?
Ответы
Ответ 1
Play 2.2 изменило имя и расположение файла, используемого для запуска вашего приложения.
http://www.playframework.com/documentation/2.2.x/Production
Например, чтобы запустить приложение проекта foo из папки проекта, обновите файл Procfile для запуска:
target/universal/stage/bin/foo
Ответ 2
См. Развернуть в Heroku, особенно Connecting to a database
.
Ответ 3
Я решил это следующим образом (возможно, уже ответил, но вот мои шаги)
$ heroku local web
Получает следующий вывод в консоли
forego | starting web.1 on port 5000
web.1 | /bin/bash: target/bin/Service: Permission denied
Тогда я сделал
$chmod 777 target/bin/Service
и проблема решена.
Здесь Service - это имя моего приложения (как указано в pom.xml org.codehaus.mojo-плагине), и вот что такое содержимое файла Procfile выглядит как
web: target/bin/Service -Dhttp.port=${PORT} ${JAVA_OPTS} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}