Skip to content

Commit 005034d

Browse files
committed
Using the sbt-docker plugin.
Note, still need to use the `docker` service in Travis, as you cannot programmatically log in to private repositories, like Heroku. See marcus-drake/sbt-docker#28 for more details.
1 parent 927b344 commit 005034d

File tree

4 files changed

+24
-3
lines changed

4 files changed

+24
-3
lines changed

.travis.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ after_success:
2525
sbt publishSignedAll;
2626
echo "Deploying to Heroku";
2727
docker login [email protected] --password=$heroku_token registry.heroku.com;
28-
docker build -t registry.heroku.com/scala-evaluator-sandbox/web .;
29-
docker push registry.heroku.com/scala-evaluator-sandbox/web;
28+
sbt dockerBuildAndPush;
3029
fi
3130
- if [ "$TRAVIS_PULL_REQUEST" = "true" ]; then
3231
echo "Not in master branch, skipping deploy and release";

build.sbt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ lazy val `evaluator-server` = (project in file("server"))
5656
.dependsOn(`evaluator-shared-jvm`)
5757
.enablePlugins(JavaAppPackaging)
5858
.enablePlugins(AutomateHeaderPlugin)
59+
.enablePlugins(sbtdocker.DockerPlugin)
5960
.settings(noPublishSettings: _*)
6061
.settings(
6162
name := "evaluator-server",
@@ -78,7 +79,27 @@ lazy val `evaluator-server` = (project in file("server"))
7879
),
7980
assemblyJarName in assembly := "evaluator-server.jar"
8081
)
82+
.settings(dockerSettings)
8183
.settings(compilerDependencySettings: _*)
8284

8385
onLoad in Global := (Command.process("project evaluator-server", _: State)) compose (onLoad in Global).value
8486
addCommandAlias("publishSignedAll", ";evaluator-sharedJS/publishSigned;evaluator-sharedJVM/publishSigned;evaluator-clientJS/publishSigned;evaluator-clientJVM/publishSigned")
87+
88+
lazy val dockerSettings = Seq(
89+
docker <<= docker dependsOn assembly,
90+
dockerfile in docker := {
91+
92+
val artifact: File = assembly.value
93+
val artifactTargetPath = artifact.name
94+
95+
sbtdocker.immutable.Dockerfile.empty
96+
.from("ubuntu:latest")
97+
.run("apt-get", "update")
98+
.run("apt-get", "install", "-y", "openjdk-8-jdk")
99+
.run("useradd", "-m", "evaluator")
100+
.user("evaluator")
101+
.add(artifact, artifactTargetPath)
102+
.cmdRaw(s"java -Dhttp.port=$$PORT -jar $artifactTargetPath")
103+
},
104+
imageNames in docker := Seq(ImageName(repository = "registry.heroku.com/scala-evaluator-sandbox/web"))
105+
)

project/EvaluatorBuild.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ object EvaluatorBuild extends AutoPlugin {
8686

8787
val projectName = Project.extract(s).currentProject.id
8888

89-
s"$blue$projectName$white>${c.RESET}"
89+
s"$blue$projectName$white>${c.RESET} "
9090
}
9191
)
9292

project/plugins.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ addSbtPlugin("de.heikoseeberger" % "sbt-header" % "1.6.0")
44
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.0.1")
55
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.12")
66
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
7+
addSbtPlugin("se.marcuslonnberg" % "sbt-docker" % "1.4.0")

0 commit comments

Comments
 (0)