2016-05-29 4 views
1

Es ist das erste Mal, dass ich Docker verwende. Ich habe es richtig installiert und der Daemon-Dienst läuft, wie es nötig ist. SO, ich habe eine einfache Web-App mit play Framework und scala Sprache gebaut. Nachdem ich "sbt docker: publishLocal" ausgeführt habe, habe ich "Built image play-scala-book: 1.0-SNAPSHOT" Erfolg bekommen. Ich exportiere "DOCKER_HOST = tcp: //192.168.0.8: 2375". Mein built.sbt ist >>Wie downloade ich meine Scala-App?

// import NativePackagerKeys._ 
// setting a maintainer which is used for all packaging types 
maintainer := "Felipe Oliveira Gutierrez" 
// exposing the play ports 
dockerExposedPorts in Docker := Seq(9000, 9443) 

name := """play-scala-book""" 
version := "1.0-SNAPSHOT" 
lazy val root = (project in file(".")).enablePlugins(PlayScala) 
scalaVersion := "2.11.7" 

libraryDependencies ++= Seq(
    jdbc, 
    cache, 
    ws, 
    evolutions, 
    "com.typesafe.play" %% "anorm" % "2.4.0", 
    "commons-codec" % "commons-codec" % "1.6", 
    specs2 % Test 
) 
resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases" 
// enablePlugins(JavaAppPackaging) 

Aber wenn ich laufen "Docker Lauf -p 9000: 9000 Play-scala-Buch: 1,0-snapshot" Ich habe diesen Fehler >>

[info] application - Creating Pool for datasource 'default' 
[info] p.a.d.DefaultDBApi - Database [default] connected at jdbc:h2:mem:play 
[error] o.j.StatementLogger - java.sql.Statement.executeQuery: select id, hash, apply_script, revert_script, state, last_problem from play_evolutions where state like 'applying_%'; 
throws exception: org.h2.jdbc.JdbcSQLException: Table "PLAY_EVOLUTIONS" not found; SQL statement: 
select id, hash, apply_script, revert_script, state, last_problem from play_evolutions where state like 'applying_%' [42102-191] 
org.h2.jdbc.JdbcSQLException: Table "PLAY_EVOLUTIONS" not found; SQL statement: 
select id, hash, apply_script, revert_script, state, last_problem from play_evolutions where state like 'applying_%' [42102-191] 
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) 
    at org.h2.message.DbException.get(DbException.java:179) 
    at org.h2.message.DbException.get(DbException.java:155) 
    at org.h2.command.Parser.readTableOrView(Parser.java:5349) 
    at org.h2.command.Parser.readTableFilter(Parser.java:1245) 
    at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1884) 
    at org.h2.command.Parser.parseSelectSimple(Parser.java:2032) 
    at org.h2.command.Parser.parseSelectSub(Parser.java:1878) 
    at org.h2.command.Parser.parseSelectUnion(Parser.java:1699) 
    at org.h2.command.Parser.parseSelect(Parser.java:1687) 
[warn] p.a.d.e.ApplicationEvolutions - Your production database [default] needs evolutions! 

# --- Rev:1,Ups - 96578d1 
CREATE SEQUENCE book_id_seq; 

CREATE TABLE book (
id integer NOT NULL DEFAULT nextval('book_id_seq'), 
label varchar(255), 
added bigint 
); 

[warn] p.a.d.e.ApplicationEvolutions - Run with -Dplay.evolutions.db.default.autoApply=true if you want to run them automatically (be careful) 
[error] p.a.l.c.CryptoConfigParser - The application secret has not been set, and we are in prod mode. Your application is not secure. 
[error] p.a.l.c.CryptoConfigParser - To set the application secret, please read http://playframework.com/documentation/latest/ApplicationSecret 
[error] p.a.l.c.CryptoConfigParser - The application secret has not been set, and we are in prod mode. Your application is not secure. 
[error] p.a.l.c.CryptoConfigParser - To set the application secret, please read http://playframework.com/documentation/latest/ApplicationSecret 
[error] p.a.l.c.CryptoConfigParser - The application secret has not been set, and we are in prod mode. Your application is not secure. 
[error] p.a.l.c.CryptoConfigParser - To set the application secret, please read http://playframework.com/documentation/latest/ApplicationSecret 
[info] application - ApplicationTimer demo: Starting application at 2016-05-29T15:57:43.182Z. 
[error] p.a.l.c.CryptoConfigParser - The application secret has not been set, and we are in prod mode. Your application is not secure. 
[error] p.a.l.c.CryptoConfigParser - To set the application secret, please read http://playframework.com/documentation/latest/ApplicationSecret 
[error] p.a.l.c.CryptoConfigParser - The application secret has not been set, and we are in prod mode. Your application is not secure. 
[error] p.a.l.c.CryptoConfigParser - To set the application secret, please read http://playframework.com/documentation/latest/ApplicationSecret 
[error] p.a.l.c.CryptoConfigParser - The application secret has not been set, and we are in prod mode. Your application is not secure. 
[error] p.a.l.c.CryptoConfigParser - To set the application secret, please read http://playframework.com/documentation/latest/ApplicationSecret 
Oops, cannot start the server. 
@708n7c3af: Database 'default' needs evolution! 
    at play.api.db.evolutions.ApplicationEvolutions$$anonfun$play$api$db$evolutions$ApplicationEvolutions$$runEvolutions$1.apply$mcV$sp(ApplicationEvolutions.scala:75) 
    at play.api.db.evolutions.ApplicationEvolutions.withLock(ApplicationEvolutions.scala:99) 
    at play.api.db.evolutions.ApplicationEvolutions.play$api$db$evolutions$ApplicationEvolutions$$runEvolutions(ApplicationEvolutions.scala:49) 
    at play.api.db.evolutions.ApplicationEvolutions$$anonfun$start$1.apply(ApplicationEvolutions.scala:42) 
    at play.api.db.evolutions.ApplicationEvolutions$$anonfun$start$1.apply(ApplicationEvolutions.scala:42) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at play.api.db.evolutions.ApplicationEvolutions.start(ApplicationEvolutions.scala:42) 
    at play.api.db.evolutions.ApplicationEvolutions.<init>(ApplicationEvolutions.scala:150) 
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get$lzycompute(EvolutionsModule.scala:53) 
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:53) 
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:44) 
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81) 
    at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72) 
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61) 
    at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103) 
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) 
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145) 
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) 
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205) 
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199) 
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092) 
    at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199) 
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180) 
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110) 
    at com.google.inject.Guice.createInjector(Guice.java:96) 
    at com.google.inject.Guice.createInjector(Guice.java:84) 
    at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:181) 
    at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:123) 
    at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21) 
    at play.core.server.ProdServerStart$.start(ProdServerStart.scala:47) 
    at play.core.server.ProdServerStart$.main(ProdServerStart.scala:22) 
    at play.core.server.ProdServerStart.main(ProdServerStart.scala) 

On meine conf/application.conf Ich habe diese>

play.evolutions { 
    # You can disable evolutions for a specific datasource if necessary 
    db.default.enabled = true 
    db.default.autoApply = true 
} 
+0

Haben Sie de Datenbankfehler oder die Anwendung geheimen Fehler lösen wollen? – Hugo

+0

Ich denke, das ist der Hauptfehler, um mich dockerisieren zu lassen "kann den Server nicht starten. @ 708n7c3af: Datenbank 'Standard' braucht Evolution!". Aber ich habe bereits Entwicklungen in meinen Bibliotheken. Ich möchte nur meine App docken. –

+0

Vielleicht kann es Ihre application.conf Datei nicht finden? Versuchen Sie ein gutes Anwendungsgeheimnis in Ihrer application.conf zu konfigurieren. Wenn das Problem mit der Anwendung nicht gelöst wird und auch die Antwort von Michael Vaughan nicht funktioniert, müssen Sie wahrscheinlich überprüfen, ob Ihre App die Datei application.conf finden kann. – Hugo

Antwort

0

Es scheint, als ob Sie nicht evolutions eingestellt haben, um die ups automatisch anzuwenden. Versuchen Sie, die folgende Zeile zu Ihrer application.conf hinzuzufügen und es erneut zu versuchen.

play.evolutions.db.default.autoApply=true

+0

nein, der Fehler ist immer noch der gleiche –

+0

Haben Sie eine Tabelle mit dem Namen 'play_evolutions' in Ihrem Schema? –

+0

Ja, ich habe die ursprüngliche Frage bearbeitet, um zu zeigen, was sich in meiner application.conf befindet. –