From 818d8f768f40fafc4ddb708c4f90af59de8a6f9b Mon Sep 17 00:00:00 2001 From: kazk Date: Mon, 28 Aug 2017 17:19:39 -0700 Subject: [PATCH] Replace listen.js --- docker/alt.docker | 5 ++++- docker/chapel.docker | 7 +++++-- docker/crystal.docker | 5 ++++- docker/dart.docker | 5 ++++- docker/dotnet.docker | 5 ++++- docker/elixir.docker | 5 ++++- docker/erlang.docker | 5 ++++- docker/esolangs.docker | 5 ++++- docker/func.docker | 7 ++++--- docker/go.docker | 5 ++++- docker/gradle.docker | 5 ++++- docker/haskell.docker | 5 ++++- docker/java.docker | 5 ++++- docker/julia.docker | 5 ++++- docker/jvm.docker | 5 ++++- docker/lua.docker | 5 ++++- docker/nim.docker | 5 ++++- docker/node.docker | 5 ++++- docker/objc.docker | 5 ++++- docker/ocaml.docker | 5 ++++- docker/powershell.docker | 5 ++++- docker/python.docker | 5 ++++- docker/r.docker | 5 ++++- docker/ruby.docker | 5 ++++- docker/rust.docker | 5 ++++- docker/solidity.docker | 5 ++++- docker/swift.docker | 5 ++++- docker/systems.docker | 5 ++++- entrypoint.sh | 17 +++++++++++++++++ listen.js | 19 ------------------- 30 files changed, 130 insertions(+), 50 deletions(-) create mode 100644 entrypoint.sh delete mode 100644 listen.js diff --git a/docker/alt.docker b/docker/alt.docker index 7dab8edd..4300c9e2 100644 --- a/docker/alt.docker +++ b/docker/alt.docker @@ -34,8 +34,11 @@ COPY frameworks/php frameworks/php COPY test/runner.js test/ COPY test/runners/php_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 3000 test/runners/php_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/chapel.docker b/docker/chapel.docker index 2d7b4a3c..6f5d0804 100644 --- a/docker/chapel.docker +++ b/docker/chapel.docker @@ -14,7 +14,7 @@ RUN mkdir $CHPL_HOME \ && make \ && cd .. \ && $CHPL_HOME/util/printchplenv - + ENV CHPL_HOST_PLATFORM=linux64 ENV PATH="$CHPL_HOME"/bin/$CHPL_HOST_PLATFORM:"$CHPL_HOME"/util:"$PATH" @@ -35,8 +35,11 @@ COPY frameworks/chapel frameworks/chapel COPY test/runner.js test/ COPY test/runners/chapel_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 10000 test/runners/chapel_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/crystal.docker b/docker/crystal.docker index ab0bb073..b34c61e9 100644 --- a/docker/crystal.docker +++ b/docker/crystal.docker @@ -25,6 +25,9 @@ COPY frameworks/crystal/shard.yml /home/codewarrior/crystal/shard.yml COPY frameworks/crystal/formatter.cr /home/codewarrior/crystal/formatter.cr RUN chown -R codewarrior:codewarrior /home/codewarrior/crystal +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN cd /home/codewarrior/crystal \ @@ -41,4 +44,4 @@ COPY test/runners/crystal_spec.js test/runners/ RUN mocha -t 10000 test/runners/crystal_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/dart.docker b/docker/dart.docker index 51689a65..03a1e14c 100644 --- a/docker/dart.docker +++ b/docker/dart.docker @@ -20,6 +20,9 @@ WORKDIR /runner COPY package.json package.json RUN npm install --production +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior ENV PATH=$PATH:$HOME/.pub-cache/bin @@ -44,4 +47,4 @@ COPY test/runners/dart_spec.js test/runners/ RUN mocha -t 10000 test/runners/dart_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/dotnet.docker b/docker/dotnet.docker index e12328eb..fad1ff1b 100644 --- a/docker/dotnet.docker +++ b/docker/dotnet.docker @@ -54,6 +54,9 @@ COPY test/runner.js test/ COPY test/runners/csharp_spec.js test/runners/ COPY test/runners/fsharp_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior @@ -62,4 +65,4 @@ RUN mocha -t 10000 test/runners/fsharp_spec.js RUN sh /runner/lib/cleanup.sh RUN mono -V -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/elixir.docker b/docker/elixir.docker index 39577e19..c6a5e57b 100644 --- a/docker/elixir.docker +++ b/docker/elixir.docker @@ -36,9 +36,12 @@ COPY frameworks/elixir frameworks/elixir COPY test/runner.js test/ COPY test/runners/elixir_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/elixir_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/erlang.docker b/docker/erlang.docker index e6520aec..f6527b97 100644 --- a/docker/erlang.docker +++ b/docker/erlang.docker @@ -37,6 +37,9 @@ COPY examples/erlang.yml examples/ COPY frameworks/erlang/cw /workspace/erlang RUN chown -R codewarrior:codewarrior /workspace/erlang +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior @@ -54,4 +57,4 @@ RUN cd /workspace/erlang \ RUN mocha -t 5000 test/runners/erlang_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/esolangs.docker b/docker/esolangs.docker index 01944bf0..6ac2dfb5 100644 --- a/docker/esolangs.docker +++ b/docker/esolangs.docker @@ -24,9 +24,12 @@ COPY frameworks/javascript/chai-display.js frameworks/javascript/ COPY test/runner.js test/ COPY test/runners/bf_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 10000 test/runners/bf_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/func.docker b/docker/func.docker index cf26b158..fd747506 100644 --- a/docker/func.docker +++ b/docker/func.docker @@ -24,6 +24,9 @@ ADD . /runner WORKDIR /runner RUN ln -s /home/codewarrior /workspace +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + # Run the test suite to make sure this thing works USER codewarrior @@ -32,6 +35,4 @@ ENV USER codewarrior ENV HOME /home/codewarrior RUN mocha -t 5000 test/runners/{ocaml,racket}_spec.js -#timeout is a fallback in case an error with node -#prevents it from exiting properly -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/go.docker b/docker/go.docker index 69b1480b..88162da0 100644 --- a/docker/go.docker +++ b/docker/go.docker @@ -48,8 +48,11 @@ COPY test/runners/go_spec.js test/runners/ COPY frameworks/go/codewars $GOPATH/src/codewars RUN go install codewars/reporter +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/go_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/gradle.docker b/docker/gradle.docker index 7388310a..99cf755c 100644 --- a/docker/gradle.docker +++ b/docker/gradle.docker @@ -32,6 +32,9 @@ RUN npm install --production COPY frameworks/gradle frameworks/gradle RUN chown -R codewarrior:codewarrior frameworks/gradle +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior @@ -67,4 +70,4 @@ RUN mocha test/runners/kotlin_spec.js RUN mocha test/runners/groovy_spec.js RUN mocha test/runners/scala_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/haskell.docker b/docker/haskell.docker index c14fe0d4..f0a7694f 100644 --- a/docker/haskell.docker +++ b/docker/haskell.docker @@ -56,8 +56,11 @@ COPY test/runner.js test/ COPY test/runners/haskell_spec.js test/runners/ COPY frameworks/haskell frameworks/haskell +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 10000 test/runners/haskell_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/java.docker b/docker/java.docker index 45d447aa..1691bf99 100644 --- a/docker/java.docker +++ b/docker/java.docker @@ -76,6 +76,9 @@ COPY frameworks/java frameworks/java RUN chown codewarrior frameworks/java RUN gradle --version +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior @@ -84,4 +87,4 @@ RUN cd /runner/frameworks/java && gradle --stacktrace --no-daemon compileTestJav RUN mocha -t 20000 test/runners/java_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/julia.docker b/docker/julia.docker index 5e0bb89f..80e626d6 100644 --- a/docker/julia.docker +++ b/docker/julia.docker @@ -45,8 +45,11 @@ COPY test/runner.js test/ COPY test/runners/julia_spec.js test/runners/ COPY frameworks/julia frameworks/julia +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/julia_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/jvm.docker b/docker/jvm.docker index ad98cbd0..05e9cdbc 100644 --- a/docker/jvm.docker +++ b/docker/jvm.docker @@ -43,9 +43,12 @@ COPY examples/clojure.yml examples/ COPY test/runner.js test/ COPY test/runners/clojure_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior ENV TIMEOUT 10000 RUN mocha -t 10000 test/runners/clojure_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/lua.docker b/docker/lua.docker index b4c8fab3..6452dc5c 100644 --- a/docker/lua.docker +++ b/docker/lua.docker @@ -29,8 +29,11 @@ COPY frameworks/lua frameworks/lua COPY test/runner.js test/ COPY test/runners/lua_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/lua_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/nim.docker b/docker/nim.docker index 5e1a76c5..64b399bb 100644 --- a/docker/nim.docker +++ b/docker/nim.docker @@ -41,8 +41,11 @@ COPY frameworks/nim frameworks/nim COPY test/runner.js test/ COPY test/runners/nim_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior PATH=/opt/nim/bin:$PATH RUN mocha -t 5000 test/runners/nim_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/node.docker b/docker/node.docker index 73577adc..53b98ec3 100644 --- a/docker/node.docker +++ b/docker/node.docker @@ -139,6 +139,9 @@ COPY typings /runner/typings # add typings into a cleaner path for inclusion COPY typings/main/ambient /runner/typings +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior ENV NODE_PATH=/usr/lib/node_modules:/runner/node_modules @@ -148,4 +151,4 @@ RUN mocha -t 10000 --recursive test/runners/javascript/ RUN mocha -t 10000 test/runners/coffeescript_spec.js RUN mocha -t 10000 test/runners/typescript_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/objc.docker b/docker/objc.docker index e1ab44bb..cb9c8b52 100644 --- a/docker/objc.docker +++ b/docker/objc.docker @@ -146,8 +146,11 @@ COPY test/runner.js test/ COPY test/runners/objc_spec.js test/runners/ COPY frameworks/objc /usr/local/include +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/objc_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/ocaml.docker b/docker/ocaml.docker index 9668068d..56739041 100644 --- a/docker/ocaml.docker +++ b/docker/ocaml.docker @@ -22,6 +22,9 @@ COPY examples/ocaml.yml examples/ COPY test/runner.js test/ COPY test/runners/ocaml_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior @@ -51,4 +54,4 @@ RUN (echo 'let () ='; \ WORKDIR /runner RUN mocha -t 5000 test/runners/ocaml_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/powershell.docker b/docker/powershell.docker index aa9b1111..f6e8f1b9 100644 --- a/docker/powershell.docker +++ b/docker/powershell.docker @@ -36,8 +36,11 @@ COPY frameworks/powershell frameworks/powershell COPY test/runner.js test/ COPY test/runners/powershell_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/powershell_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/python.docker b/docker/python.docker index 7f44bc59..8461911c 100644 --- a/docker/python.docker +++ b/docker/python.docker @@ -100,8 +100,11 @@ COPY frameworks/python3 frameworks/python3 COPY test/runner.js test/ COPY test/runners/python_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/python_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/r.docker b/docker/r.docker index 53b5148a..195c370d 100644 --- a/docker/r.docker +++ b/docker/r.docker @@ -28,8 +28,11 @@ COPY frameworks/r frameworks/r COPY test/runner.js test/ COPY test/runners/r_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/r_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/ruby.docker b/docker/ruby.docker index ddf5a5a2..c2c68a41 100644 --- a/docker/ruby.docker +++ b/docker/ruby.docker @@ -183,6 +183,9 @@ COPY test/runners/ruby_spec.js test/runners/ COPY test/runners/shell_spec.js test/runners/ COPY test/runners/sql_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior @@ -191,4 +194,4 @@ RUN mocha -t 5000 test/runners/shell_spec.js #RUN mocha -t 5000 test/runners/sql_spec.js RUN sh /runner/lib/cleanup.sh -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/rust.docker b/docker/rust.docker index 48b7b40e..e0056c3a 100644 --- a/docker/rust.docker +++ b/docker/rust.docker @@ -30,10 +30,13 @@ COPY examples/rust.yml examples/ COPY test/runner.js test/ COPY test/runners/rust_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior ENV PATH=$HOME/.cargo/bin:$PATH RUN mocha -t 10000 test/runners/rust_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/solidity.docker b/docker/solidity.docker index b1c5a00b..3b0dae85 100644 --- a/docker/solidity.docker +++ b/docker/solidity.docker @@ -32,6 +32,9 @@ COPY lib/runners/solidity.js lib/runners/ COPY test/runner.js test/ COPY test/runners/solidity_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior @@ -44,4 +47,4 @@ RUN cd /workspace/solidity \ && truffle version RUN mocha test/runners/solidity_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/swift.docker b/docker/swift.docker index e505af6d..c8275e43 100644 --- a/docker/swift.docker +++ b/docker/swift.docker @@ -67,8 +67,11 @@ COPY frameworks/swift frameworks/swift COPY test/runner.js test/ COPY test/runners/swift_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/swift_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/systems.docker b/docker/systems.docker index 1958ac81..7e07f043 100644 --- a/docker/systems.docker +++ b/docker/systems.docker @@ -58,9 +58,12 @@ COPY test/runner.js test/ COPY test/runners/c_spec.js test/runners/ COPY test/runners/cpp_spec.js test/runners/ +COPY entrypoint.sh entrypoint.sh +RUN chmod +x entrypoint.sh + USER codewarrior ENV USER=codewarrior HOME=/home/codewarrior RUN mocha -t 5000 test/runners/{c,cpp}_spec.js -ENTRYPOINT ["node"] +ENTRYPOINT ["./entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 00000000..b3afaad2 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -e + +# if CMD was empty or `listen`, do `tail -f /dev/null` to keep the container running +if [ "$#" -eq 0 -o "$1" = 'listen' ]; then + set -- tail -f /dev/null + if [ -r /runner/prewarm.sh ]; then + bash /runner/prewarm.sh + fi +else + # otherwise, prepend node for `run-json`/`run` + if [ "$1" = 'run-json' -o "$1" = 'run' ]; then + set -- node "$@" + fi +fi + +exec "$@" diff --git a/listen.js b/listen.js deleted file mode 100644 index e66b88a5..00000000 --- a/listen.js +++ /dev/null @@ -1,19 +0,0 @@ -// this file is used to keep a image alive so that it can be pre-warmed and communicated with. -const net = require('net'), - execSync = require('child_process').execSync, - fs = require('fs'); - -// if the script is available, it will call it -if (fs.existsSync('/runner/prewarm.sh')) { - console.log(execSync('sh /runner/prewarm.sh').toString()); -} - -// Creates a new TCP server. The handler argument is automatically set as a listener for the 'connection' event -var server = net.createServer(function(socket) { - // Every time someone connects, tell them hello and then close the connection. - console.log("Connection from " + socket.remoteAddress); - socket.end("Hello World\n"); -}); - -// Fire up the server bound to port 7000 on localhost -server.listen(7000, "localhost");