scalafiddle / scalafiddle-core

Source code for the scalafiddle.io compilation service
https://scalafiddle.io
Apache License 2.0
100 stars 37 forks source link

building docker image failes #26

Open CodeLionX opened 6 years ago

CodeLionX commented 6 years ago

I'm unable to build the docker images for scalafiddle-core of the current master-branch. The command sbt docker failes for both modules router and compileServer at updating libc6-compat in the docker image. See the error message below.

However, removing this step from the "Dockerfile" leads to a successful build. Execution via docker-compose with the configuration from scalafiddle-io/docker-compose.yml seems also successful after removing those lines.

Error Message:

[info] Sending build context to Docker daemon  40.57MB
[info]
[info] Step 1/5 : FROM anapsix/alpine-java:8_jdk
[info]  ---> df3ed4ce1e61
[info] Step 2/5 : RUN ["apk", "add", "--update", "bash", "libc6-compat"]
[info]  ---> Running in e0ce1f776b36
[info] fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/main/x86_64/APKINDEX.tar.gz
[info] fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/community/x86_64/APKINDEX.tar.gz
[info] (1/1) Installing libc6-compat (1.1.16-r14)
[info] ERROR: libc6-compat-1.1.16-r14: trying to overwrite lib/ld-linux-x86-64.so.2 owned by glibc-2.26-r0.
[info] ERROR: libc6-compat-1.1.16-r14: failed to rename lib64.apk-new to lib64.
[info] Executing glibc-bin-2.26-r0.trigger
[info] 1 error; 21 MiB in 22 packages
[info] The command 'apk add --update bash libc6-compat' returned a non-zero code: 1
java.lang.RuntimeException: Nonzero exit code: 1
    at scala.sys.process.BasicIO$Streamed$.scala$sys$process$BasicIO$Streamed$$next$1(BasicIO.scala:48)
    at scala.sys.process.BasicIO$Streamed$$anonfun$scala$sys$process$BasicIO$Streamed$$next$1$1.apply(BasicIO.scala:49)
    at scala.sys.process.BasicIO$Streamed$$anonfun$scala$sys$process$BasicIO$Streamed$$next$1$1.apply(BasicIO.scala:49)
    at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1085)
    at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1077)
    at scala.collection.immutable.Stream.foreach(Stream.scala:548)
    at sbtdocker.DockerBuild$.build(DockerBuild.scala:87)
    at sbtdocker.DockerBuild$.buildAndTag(DockerBuild.scala:72)
    at sbtdocker.DockerBuild$.apply(DockerBuild.scala:45)
    at sbtdocker.DockerBuild$.apply(DockerBuild.scala:24)
    at sbtdocker.DockerSettings$$anonfun$baseDockerSettings$1.apply(DockerSettings.scala:17)
    at sbtdocker.DockerSettings$$anonfun$baseDockerSettings$1.apply(DockerSettings.scala:10)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
    at sbt.std.Transform$$anon$4.work(System.scala:63)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
[error] (router/*:docker) Nonzero exit code: 1
[error] Total time: 37 s, completed Jan 12, 2018 2:28:47 PM

How to reproduce:

Client info:

Server: Engine: Version: 17.12.0-ce API version: 1.35 (minimum version 1.12) Go version: go1.9.2 Git commit: c97c6d6 Built: Wed Dec 27 20:12:29 2017 OS/Arch: linux/amd64 Experimental: true

- sbt about

[info] This is sbt 0.13.16 [info] The current project is {file:/Users//scalafiddle-core/}root 0.1-SNAPSHOT [info] The current project is built against Scala 2.10.6 [info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin, sbt.plugins.Giter8TemplatePlugin, org.scalajs.jsdependencies.sbtplugin.JSDependenciesPlugin, org.scalajs.sbtplugin.ScalaJSJUnitPlugin, org.scalajs.sbtplugin.ScalaJSPlugin, org.scalajs.sbtplugin.internal.ScalaJSGlobalPlugin, com.typesafe.sbt.SbtNativePackager, com.typesafe.sbt.packager.archetypes.JavaAppPackaging, com.typesafe.sbt.packager.archetypes.JavaServerAppPackaging, com.typesafe.sbt.packager.archetypes.jar.ClasspathJarPlugin, com.typesafe.sbt.packager.archetypes.jar.LauncherJarPlugin, com.typesafe.sbt.packager.archetypes.scripts.AshScriptPlugin, com.typesafe.sbt.packager.archetypes.scripts.BashStartScriptPlugin, com.typesafe.sbt.packager.archetypes.scripts.BatStartScriptPlugin, com.typesafe.sbt.packager.archetypes.systemloader.SystemVPlugin, com.typesafe.sbt.packager.archetypes.systemloader.SystemdPlugin, com.typesafe.sbt.packager.archetypes.systemloader.SystemloaderPlugin, com.typesafe.sbt.packager.archetypes.systemloader.UpstartPlugin, com.typesafe.sbt.packager.debian.DebianDeployPlugin, com.typesafe.sbt.packager.debian.DebianPlugin, com.typesafe.sbt.packager.debian.JDebPackaging, com.typesafe.sbt.packager.docker.DockerPlugin, com.typesafe.sbt.packager.docker.DockerSpotifyClientPlugin, com.typesafe.sbt.packager.jdkpackager.JDKPackagerDeployPlugin, com.typesafe.sbt.packager.jdkpackager.JDKPackagerPlugin, com.typesafe.sbt.packager.linux.LinuxPlugin, com.typesafe.sbt.packager.rpm.RpmDeployPlugin, com.typesafe.sbt.packager.rpm.RpmPlugin, com.typesafe.sbt.packager.universal.UniversalDeployPlugin, com.typesafe.sbt.packager.universal.UniversalPlugin, com.typesafe.sbt.packager.windows.WindowsDeployPlugin, com.typesafe.sbt.packager.windows.WindowsPlugin, sbtdocker.DockerPlugin, spray.revolver.RevolverPlugin, com.lucidchart.sbt.scalafmt.ScalafmtCorePlugin, com.lucidchart.sbt.scalafmt.ScalafmtPlugin, com.lucidchart.sbt.scalafmt.ScalafmtSbtPlugin, com.timushev.sbt.updates.UpdatesPlugin [info] sbt, sbt plugins, and build definitions are using Scala 2.10.6

ochrons commented 6 years ago

Building the docker image works ok on my machine, probably because the actual version of the base image is different.

[info] Step 1/4 : FROM anapsix/alpine-java:8_jdk
[info]  ---> 46796749789c
[info] Step 2/4 : RUN ["apk", "add", "--update", "bash", "libc6-compat"]
[info]  ---> Using cache
[info]  ---> 1a97c1332bb9
[info] Step 3/4 : ENTRYPOINT ["\/app\/bin\/scalafiddle-core"]
[info]  ---> Using cache
[info]  ---> 1af2ff1252ae
[info] Step 4/4 : COPY 0/stage /app
[info]  ---> 13101283aa6e
[info] Successfully built 13101283aa6e
CodeLionX commented 6 years ago

How can I find out what version of the base image is used by docker? It pulled the image for anapsix/alpine-java:8_jdk directly from docker-hub...

In your docker-output, docker is using the cache for step 2, I can't use the cache, because it wasn't build on my machine yet. Does it work for you if you are clearing the cache before, so that docker is forced to rebuild all layers?