diff options
author | Andreas Fankhauser hiddenalpha.ch | 2022-11-25 23:41:04 +0100 |
---|---|---|
committer | Andreas Fankhauser hiddenalpha.ch | 2022-11-25 23:41:04 +0100 |
commit | eb00bfd4153da499a33b3614533717832c21cbdb (patch) | |
tree | ea3092d0fe8f128a978ebaea9cea0f528d289590 | |
parent | 4e0776e378f096931ff3298e16b6dcec708d50dd (diff) | |
download | UnspecifiedGarbage-eb00bfd4153da499a33b3614533717832c21cbdb.zip UnspecifiedGarbage-eb00bfd4153da499a33b3614533717832c21cbdb.tar.gz |
Impl Dockerfile to build-and-run gateleen-playground
-rw-r--r-- | doc/note/docker/Docker.txt | 6 | ||||
-rw-r--r-- | src/main/docker/gateleen.Dockerfile | 65 |
2 files changed, 68 insertions, 3 deletions
diff --git a/doc/note/docker/Docker.txt b/doc/note/docker/Docker.txt index 26c32da..7a9d130 100644 --- a/doc/note/docker/Docker.txt +++ b/doc/note/docker/Docker.txt @@ -19,12 +19,12 @@ Example CNTNR: "your_container" ## Basic Usage docker build -f DOCKERFILE -t IMG WORKDIR - docker run --rm -ti IMG sh docker run --rm -i IMG sh --help - + docker create --name CNTNR -v "$PWD:/work" IMG + docker start CNTNR docker exec -ti CNTNR sh - docker exec -ti CNTNR -- sh -c 'echo foo bar' + docker exec -ti CNTNR sh -c 'echo foo bar' diff --git a/src/main/docker/gateleen.Dockerfile b/src/main/docker/gateleen.Dockerfile new file mode 100644 index 0000000..68854d0 --- /dev/null +++ b/src/main/docker/gateleen.Dockerfile @@ -0,0 +1,65 @@ +# +# A Gateleen playground instance. +# + +ARG PARENT_IMAGE=alpine:3.16.0 +FROM $PARENT_IMAGE + +ARG GATELEEN_GIT_TAG=v1.3.19 +ARG UID=1000 +ARG GID=1000 +ARG PKGS_TO_ADD="maven nodejs npm curl redis openjdk11-jre-headless" +#ARG PKGS_TO_DEL="maven nodejs npm" +ARG PKGS_TO_DEL="nodejs npm" +ARG PKGINIT="true" +ARG PKGADD="apk add" +ARG PKGDEL="true" +ARG PKGCLEAN="true" + +WORKDIR /work + +RUN true \ + && printf 'user:x:%s:%s:user:/work:/bin/sh\n' "${UID:?}" "${GID:?}" >> /etc/passwd \ + && true + +RUN true \ + && $PKGINIT && $PKGADD $PKGS_TO_ADD \ + && sed -i "s,</settings>, <localRepository>/data/maven/.m2/repository</localRepository>\n</settings>,g" /usr/share/java/maven-3/conf/settings.xml \ + && mkdir /data /data/maven /work/gateleen \ + && chown 1000:1000 /data/maven /work /work/gateleen \ + && curl -sSL https://github.com/swisspush/gateleen/archive/refs/tags/"$GATELEEN_GIT_TAG".tar.gz > "/tmp/gateleen-$GATELEEN_GIT_TAG.tgz" \ + && cd /work/gateleen \ + && su user -c 'tar --strip-components 1 -xf /tmp/gateleen-"$GATELEEN_GIT_TAG".tgz' \ + && (cd gateleen-hook-js && su user -c 'npm install') \ + && su user -c 'mkdir -p gateleen-hook-js/node/node_modules/npm/bin' \ + && su user -c 'ln -s /usr/bin/node gateleen-hook-js/node/node' \ + && printf "require('/usr/lib/node_modules/npm/lib/cli.js')\n" | su user -c 'tee gateleen-hook-js/node/node_modules/npm/bin/npm-cli.js' >/dev/null \ + && su user -c 'mvn install -PpublicRepos -DskipTests -Dskip.installnodenpm -pl gateleen-hook-js' \ + && su user -c 'mvn install -PpublicRepos -DfailIfNoTests=false \ + -pl !gateleen-test,!gateleen-hook-js \ + -Dtest=!ReleaseLockLuaScriptTests,!RedisCacheStorageTest,!DeltaHandlerTest,!QueueCircuitBreakerCloseCircuitLuaScriptTests,!QueueCircuitBreakerGetAllCircuitsLuaScriptTests,!QueueCircuitBreakerHalfOpenCircuitsLuaScriptTests,!QueueCircuitBreakerReOpenCircuitLuaScriptTests,!QueueCircuitBreakerUpdateStatsLuaScriptTests,!RemoveExpiredQueuesLuaScriptTests,!StartQueueTimerLuaScriptTests' \ + && mkdir /work/classpath \ + && chown "${UID:?}:${GID:?}" /work/classpath \ + && su user -c 'cd gateleen-playground && mvn dependency:copy-dependencies \ + -DexcludeScope=provided -DoutputDirectory=/work/classpath/.' \ + && cp gateleen-playground/target/gateleen-playground-*.jar /work/classpath/. \ + && mkdir /work/etc \ + && printf >/work/etc/redis.conf '%s\n' \ + 'save ""' \ + 'appendonly yes' \ + 'appenddirname "redis-state"' \ + 'appendfilename appendonly.aof' \ + && (su user -c 'cd /work && redis-server /work/etc/redis.conf & \ + java -cp '"'/work/classpath/*'"' org.swisspush.gateleen.playground.Server' \ + & sleep 3) \ + && su user -c 'cd /work/gateleen && mvn deploy -PuploadStaticFiles' \ + && pkill -INT java && pkill -INT redis-server \ + && $PKGDEL $PKGS_TO_DEL \ + && $PKGCLEAN \ + && true + +USER "${UID}:${GID}" + +#CMD ["sleep", "36000"] +CMD ["sh", "-c", "ip a|grep inet && redis-server /work/etc/redis.conf & java -cp '/work/classpath/*' org.swisspush.gateleen.playground.Server"] + |