java - starter - Play Framework 2.3.7: la ubicación de activos estáticos no funciona en producción
scala play framework sbt (1)
Tengo una solución para mi propio problema, no estoy seguro de si esta es la forma correcta o no, pero de esa manera funcionó para mí.
- pipelineStages: = Seq (rjs, digest, gzip) - Se eliminó rjs ya que no es necesario en la nueva Play
- la forma de empaquetar el marco de juego se cambió recientemente con las actualizaciones de marco de juego, ahora usa el paquete sbt para hacerlo. en este caso su ''dobrador de sbt: etapa''
- el archivo docker.aws.json es necesario para asignar el puerto expuesto al puerto externo bews de aws
- es necesario agregar una línea de permiso al archivo acoplable para permitir que el script de despliegue beanstalk acceda al directorio
- hay un error en el paquete sbt que se vinculó a Windows porque la línea de comando tiene un límite de caracteres que es golpeado. Es por eso que no puedo ejecutar un modo de producción local con el activador. Este error aún es sobresaliente, así que no puedo ejecutarlo localmente en modo de orgullo
- el archivo docker ahora se genera en el proceso del paquete sbt, así que agregué los puertos docker al archivo sbt.build. Necesito encontrar un comando para agregar al sbt.build que hará la línea de permiso en el archivo del acoplador para que podamos usar el script jenkins para automatizar el proceso
Pocos sitios que encontré realmente me ayudaron:
- http://www.ronaldcirka.com/blog/2014/12/06/deploying-play-framework-to-elastic-beanstalk-in-docker/
- ¿Por qué recibo un permiso denegado en la implementación de Docker?
- La mejor forma de implementar la aplicación play2 con Amazon Beanstalk
Espero que ayude a alguien!
He visto algunas preguntas sobre esto, pero no puedo llegar al fondo del asunto.
Tengo un sitio de Play Framework 2.3.7 (Activator 1.2.12), cuando lo ejecuto en modo dev todo funciona bien. Cuando lo inicio en modo de producción obtengo los siguientes errores:
[app] $ start
[info] Wrote C:/Users/App/git/website2.0/target/scala-2.10/app_2.10-1.0-
SNAPSHOT.pom
[info] Main Scala API documentation to C:/Users/App/git/website2.0/target/scala-
2.10/api...
[info] Compiling 57 Scala sources and 58 Java sources to C:/Users/App/git/websit
e2.0/target/scala-2.10/classes...
[error] C:/Users/App/git/website2.0/target/scala-2.10/twirl/main/views/html/admi
n/shared/foot.template.scala:29: value at is not a member of controllers.Reverse
Assets
[error] Seq[Any](forApp.raw/*1.1*/("""<script data-main=""""),_display_(/*1.21*/
routes/*1.27*/.Assets.at("javascript/admin.js")),forApp.raw/*1.60*/("""" type="t
ext/javascript" src=""""),_display_(/*1.91*/routes/*1.97*/.Assets.at("lib/requir
ejs/require.js")),forApp.raw/*1.135*/(""""></script>
[error]
^
[error] C:/Users/App/git/website2.0/target/scala-2.10/twirl/main/views/html/admi
n/shared/head.template.scala:31: value at is not a member of controllers.Reverse
Assets
[error] <link rel="stylesheet" media="screen" href=""""),_display_(/*3.46*/route
s/*3.52*/.Assets.at("stylesheets/admin.css")),forApp.raw/*3.87*/("""">
[error]
^
[error] C:/Users/App/git/website2.0/app/views/admin/shared/foot.scala.html:1: va
lue at is not a member of controllers.ReverseAssets
[error] <script data-main="@routes.Assets.at("javascript/admin.js")" type="text/
javascript" src="@routes.Assets.at("lib/requirejs/require.js")"></script>
[error] ^
[error] C:/Users/App/git/website2.0/app/views/admin/shared/head.scala.html:3: va
lue at is not a member of controllers.ReverseAssets
[error] <link rel="stylesheet" media="screen" href="@routes.Assets.at("styleshee
ts/admin.css")">
[error] ^
[error] C:/Users/App/git/website2.0/target/scala-2.10/twirl/main/views/html/home
.template.scala:38: value at is not a member of controllers.ReverseAssets
[error] <div class="item active" style="background-image:url("""
),_display_(/*10.71*/routes/*10.77*/.Assets.at("images/bg-app-list.jpg")),fo
rApp.raw/*10.117*/(""")">
[error]
^
[error] C:/Users/App/git/website2.0/app/views/home.scala.html:10: value at is no
t a member of controllers.ReverseAssets
[error] <div class="item active" style="background-image:url(@ro
utes.Assets.at("images/bg-app-list.jpg"))">
[error]
^
[error] C:/Users/App/git/website2.0/target/scala-2.10/twirl/main/views/html/shar
ed/foot.template.scala:29: value at is not a member of controllers.ReverseAssets
[error] Seq[Any](forApp.raw/*1.1*/("""<script data-main=""""),_display_(/*1.21*/
routes/*1.27*/.Assets.at("javascript/main.js")),forApp.raw/*1.59*/("""" type="te
xt/javascript" src=""""),_display_(/*1.90*/routes/*1.96*/.Assets.at("lib/require
js/require.js")),forApp.raw/*1.134*/(""""></script>
[error]
^
[error] C:/Users/App/git/website2.0/target/scala-2.10/twirl/main/views/html/shar
ed/head.template.scala:31: value at is not a member of controllers.ReverseAssets
[error] <link rel="stylesheet" media="screen" href=""""),_display_(/*3.46*/route
s/*3.52*/.Assets.at("stylesheets/main.css")),forApp.raw/*3.86*/("""">
[error]
^
[error] C:/Users/App/git/website2.0/app/views/shared/foot.scala.html:1: value at
is not a member of controllers.ReverseAssets
[error] <script data-main="@routes.Assets.at("javascript/main.js")" type="text/j
avascript" src="@routes.Assets.at("lib/requirejs/require.js")"></script>
[error] C:/Users/App/git/website2.0/target/scala-2.10/twirl/main/views/html/shar
ed/nav.template.scala:39: value at is not a member of controllers.ReverseAssets
[error] ^
[error] <img src=""""),_display_(/*11.28*/routes/*11.34*/.Assets
.at("images/logo/small_beta.png")),forApp.raw/*11.74*/("""">
[error]
^
[error] C:/Users/App/git/website2.0/app/views/shared/head.scala.html:3: value at
is not a member of controllers.ReverseAssets
[error] <link rel="stylesheet" media="screen" href="@routes.Assets.at("styleshee
ts/main.css")">
[error] ^
[error] C:/Users/App/git/website2.0/app/views/shared/nav.scala.html:11: value at
is not a member of controllers.ReverseAssets
[error] <img src="@routes.Assets.at("images/logo/small_beta.png"
)">
[error] ^
[info] Packaging C:/Users/App/git/website2.0/target/App-1.0-SNAPSHOT-ass
ets.jar ...
[info] No documentation generated with unsucessful compiler run
[error] 6 errors found
[error] 6 errors found
[info] Done packaging.
[error] (compile:doc) Scaladoc generation failed
[error] (compile:compile) Compilation failed
Cannot start with errors.
El problema parece estar en torno a los requirejs y su ruta de activos. El código para el primer error de pie de página es el siguiente:
<script data-main="@routes.Assets.at("javascript/admin.js")" type="text/javascript" src="@routes.Assets.at("lib/requirejs/require.js")"></script>
Mi archivo de rutas para activos es:
# Map static resources from the /public folder to the /assets URL path
GET /assets/javascript/routes.js controllers.Application.javascriptRoutes()
GET /assets/javascript/admin_routes.js controllers.admin.Application.javascriptRoutes()
GET /assets/*file controllers.Assets.at(path="/public", file)
Aquí está mi build.sbt
import WebKeys._
import RjsKeys._
import play.PlayJava
name := """app"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, SbtWeb)
libraryDependencies ++= Seq(
javaJpa,
javaJdbc,
cache,
"org.hibernate" % "hibernate-core" % "4.2.3.Final",
"org.hibernate" % "hibernate-entitymanager" % "4.2.3.Final",
"mysql" % "mysql-connector-java" % "5.1.31",
"org.webjars" %% "webjars-play" % "2.2.0",
"joda-time" % "joda-time-hibernate" % "1.3",
"org.mindrot" % "jbcrypt" % "0.3m",
"net.sf.flexjson" % "flexjson" % "3.2",
"org.apache.commons" % "commons-lang3" % "3.3.2",
"com.clever-age" % "play2-elasticsearch" % "1.1.0",
// WebJars (i.e. client-side) dependencies
"org.webjars" % "requirejs" % "2.1.14-1",
"org.webjars" % "jquery" % "1.11.1",
"org.webjars" % "bootstrap" % "3.1.1-2" exclude("org.webjars", "jquery"),
"com.clever-age" % "play2-elasticsearch" % "0.8.2",
"net.sourceforge.htmlunit" % "htmlunit" % "2.15",
"commons-io" % "commons-io" % "2.4",
"com.github.tototoshi" %% "play-flyway" % "1.1.2"
)
pipelineStages := Seq(rjs, digest, gzip)
RjsKeys.paths += ("jsRoutes" -> ("/jsroutes" -> "empty:"))
RjsKeys.paths += ("adminJsRoutes" -> ("/adminJsRoutes" -> "empty:"))
includeFilter in (Assets, LessKeys.less) := "*.less"
excludeFilter in (Assets, LessKeys.less) := "_*.less"
¿Alguien puede señalarme en la dirección correcta? ¡Aclamaciones!