J'essaie d'utiliser le SBT natif emballeur pour produire une image Docker de mon application de jeu de Scala, j'ai suivi les étapes décrites à http://www.scala-sbt.org/sbt-native-packager/formats/docker.htmljeu SBT-native-emballeur scala dockerfile ne fonctionne pas avec config par défaut
Ceci est ma configuration:
sur mon plugins.sbt j'ai ajouté la dépendance pour SBT emballeur native:
// SBT Native
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.2.1")
sur mon build.sbt J'ai ajouté les plug-ins pour Universal et Docker:
.enablePlugins(PlayScala, JavaAppPackaging)
J'ai aussi ajouté quelques propriétés supplémentaires:
javaOptions in Universal ++= Seq(
// JVM memory tuning
"-J-Xmx1024m",
"-J-Xms512m",
// Since play uses separate pidfile we have to provide it with a proper path
// name of the pid file must be play.pid
s"-Dpidfile.path=/var/run/${packageName.value}/play.pid",
// Use separate configuration file for production environment
s"-Dconfig.file=/usr/share/${packageName.value}/conf/production.conf",
// Use separate logger configuration file for production environment
s"-Dlogger.file=/usr/share/${packageName.value}/conf/logback.xml"
)
// exposing the play ports
dockerExposedPorts in Docker := Seq(9000, 9443)
Puis je produis l'image docker à l'aide du plug-in et SBT CLI:
docker:publishLocal
le dockerfile est généré à ./target/docker/ Dockerfile
quand je connaissance du dossier que je vois:
FROM openjdk:latest
WORKDIR /opt/docker
ADD opt /opt
RUN ["chown", "-R", "daemon:daemon", "."]
USER daemon
ENTRYPOINT ["bin/root"]
CMD []
qui ne semble pas contenir toutes les mesures nécessaires pour exécuter l'application, quand je l'utilise docker build .
je reçois:
java.nio.file.NoSuchFileException:/var/run/root/jeu. pid
il semble que le Dockerfile manque quelques étapes où il devrait mKDIR /var/run/{APP_NAME}/
(* création du dossier intérieur instance de conteneur docker)
et chown ce dossier pour que le jeu pour créer le P Fichier ID.
comment réparer l'erreur ci-dessus?
merci pour l'info supplémentaire. J'ai passé en revue vos liens et j'ai eu un problème que mon application de jeu ne fonctionne pas hors de la boîte, j'ai ajouté quelques détails ci-dessus, et suivi vos suggestions, il semble que l'image résultante de sbt-native-packager manque l'étape où il crée le dossier/var/run/{app_name}/(fichier PID) dois-je ajouter ces étapes en tant que champs personnalisés dans mon build.sbt? – guilhebl
le Dockerfile essaye de créer un dossier /var/run/${packageName.value}/ et obtient l'autorisation refusée, donc je crois qu'il devrait fonctionner en tant que root? Des suggestions pour les problèmes ci-dessus? Merci. – guilhebl
Vous pouvez désactiver le fichier pid en le définissant sur '/ dev/null'. C'est documenté dans l'application de jeu. Cela n'a aucun sens d'utiliser un fichier pid avec docker. – Muki