From 193e3d46bb8e2f77633390556dfe3f5da51e9b6a Mon Sep 17 00:00:00 2001 From: jmoore Date: Fri, 17 May 2019 14:45:04 +0100 Subject: [PATCH 01/10] Add Makefile for building & releasing --- Makefile | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7111564 --- /dev/null +++ b/Makefile @@ -0,0 +1,36 @@ +latest = fiji-openjdk-8 + +images = \ +$(latest) \ +fiji-openjdk-7 \ +fiji-oracle-jdk8 + +## Currently broken: +## - fiji-oracle-jdk6 +## - fiji-openjdk-6 +## - fiji-oracle-jdk7 +## Propose removal + +## Must be built on special hardware: +## - fiji-oracle-jdk8-arm32v7 + +all : build + +update : + @for image in $(images); do (cd $${image}; grep FROM Dockerfile | cut -f2 -d" " | xargs docker pull); done + +build: $(images) + +$(images) : %: + cd $@ && docker build -t fiji/fiji:$@ . + +release : + docker tag fiji/fiji:$(latest) fiji/fiji:latest + @for f in $(images); do docker push fiji/fiji:$${f}; done + docker push fiji/fiji:latest + +clean : + @for image in $(images); do echo docker rmi fiji/fiji:$${image}; done + docker rmi fiji/fiji:latest + +.PHONY: all update build release clean $(images) From 9eda489e12e9ca3a8b2a2ba0e5b4fc2babc03087 Mon Sep 17 00:00:00 2001 From: jmoore Date: Fri, 17 May 2019 14:46:34 +0100 Subject: [PATCH 02/10] Temporarily remove oracle-jdk8 --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7111564..1f6e7f4 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,7 @@ latest = fiji-openjdk-8 images = \ $(latest) \ -fiji-openjdk-7 \ -fiji-oracle-jdk8 +fiji-openjdk-7 ## Currently broken: ## - fiji-oracle-jdk6 From 558a016e7a8b5677bd50319467b35b279f0bec21 Mon Sep 17 00:00:00 2001 From: jmoore Date: Fri, 17 May 2019 15:20:37 +0100 Subject: [PATCH 03/10] Add more tags --- Makefile | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1f6e7f4..07a8cbe 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +today = $(shell date +%Y%m%d) + latest = fiji-openjdk-8 images = \ @@ -24,9 +26,13 @@ $(images) : %: cd $@ && docker build -t fiji/fiji:$@ . release : - docker tag fiji/fiji:$(latest) fiji/fiji:latest - @for f in $(images); do docker push fiji/fiji:$${f}; done - docker push fiji/fiji:latest + for f in $(images); do docker tag fiji/fiji:$${f} fiji/fiji:$${f}.$(today); done + for f in $(images); do docker push fiji/fiji:$${f}.$(today); done + for f in $(images); do docker push fiji/fiji:$${f}; done + docker tag fiji/fiji:$(latest) fiji/fiji:latest; + docker tag fiji/fiji:$(latest) fiji/fiji:$(today); + docker push fiji/fiji:latest; + docker push fiji/fiji:$(today); clean : @for image in $(images); do echo docker rmi fiji/fiji:$${image}; done From 9114c9268e1b5099e34027dec395f771a309344c Mon Sep 17 00:00:00 2001 From: jmoore Date: Fri, 17 May 2019 16:33:03 +0100 Subject: [PATCH 04/10] Move to bootstrapJ8 --- fiji-openjdk-8/Dockerfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fiji-openjdk-8/Dockerfile b/fiji-openjdk-8/Dockerfile index f5a0779..6c7b674 100644 --- a/fiji-openjdk-8/Dockerfile +++ b/fiji-openjdk-8/Dockerfile @@ -12,9 +12,12 @@ MAINTAINER Mark Hiner WORKDIR /fiji # Install Fiji. +# see https://github.com/fiji/fiji-builds/blob/master/.travis/build.sh#L84-L119 +# for details on the double-run RUN \ - curl -O https://update.imagej.net/bootstrap.js && \ - jrunscript bootstrap.js update-force-pristine + curl -O https://downloads.imagej.net/bootstrapJ8.js && \ + jrunscript bootstrap8.js update-force-pristine && \ + jrunscript bootstrap8.js update-force-pristine # Add fiji to the PATH ENV PATH $PATH:/fiji From 171d6313a199b23702bc2069d787ebcf1cebd221 Mon Sep 17 00:00:00 2001 From: jmoore Date: Fri, 17 May 2019 16:58:35 +0100 Subject: [PATCH 05/10] Use download strategy --- fiji-openjdk-8/Dockerfile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/fiji-openjdk-8/Dockerfile b/fiji-openjdk-8/Dockerfile index 6c7b674..08d44d5 100644 --- a/fiji-openjdk-8/Dockerfile +++ b/fiji-openjdk-8/Dockerfile @@ -12,15 +12,15 @@ MAINTAINER Mark Hiner WORKDIR /fiji # Install Fiji. -# see https://github.com/fiji/fiji-builds/blob/master/.travis/build.sh#L84-L119 -# for details on the double-run -RUN \ - curl -O https://downloads.imagej.net/bootstrapJ8.js && \ - jrunscript bootstrap8.js update-force-pristine && \ - jrunscript bootstrap8.js update-force-pristine +RUN wget -q https://downloads.imagej.net/fiji/latest/fiji-nojre.zip \ + && unzip fiji-nojre.zip \ + && rm fiji-nojre.zip +RUN wget -O- https://raw.githubusercontent.com/imagej/imagej/master/bin/ImageJ.sh |grep -v PermSize > Fiji.app/ImageJ.sh \ + && chmod u+x ./Fiji.app/ImageJ.sh # Add fiji to the PATH -ENV PATH $PATH:/fiji +ENV PATH $PATH:/fiji/Fiji.app # Define default command. -CMD ["fiji-linux64"] +ENTRYPOINT ["bash", "ImageJ.sh", "--headless"] +CMD ["--help"] From b6011dc17285fb8711c2ba1c1a8d6326a612935d Mon Sep 17 00:00:00 2001 From: jmoore Date: Fri, 17 May 2019 21:33:48 +0100 Subject: [PATCH 06/10] Various improvements for openjdk-8 - use fiji user (id=1000) rather than root - add an entrypoint for sensible defaults - pre-create Java preferences directory - revert to binary rather than ImageJ.sh --- fiji-openjdk-8/Dockerfile | 20 +++++++++++++------- fiji-openjdk-8/demo.py | 2 ++ fiji-openjdk-8/entrypoint.sh | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 fiji-openjdk-8/demo.py create mode 100755 fiji-openjdk-8/entrypoint.sh diff --git a/fiji-openjdk-8/Dockerfile b/fiji-openjdk-8/Dockerfile index 08d44d5..eb1ed64 100644 --- a/fiji-openjdk-8/Dockerfile +++ b/fiji-openjdk-8/Dockerfile @@ -8,19 +8,25 @@ FROM openjdk:8 # Define maintainer. MAINTAINER Mark Hiner +# Create a user. +RUN useradd -u 1000 -ms /bin/bash fiji +USER fiji + # Define working directory. -WORKDIR /fiji +WORKDIR /home/fiji # Install Fiji. RUN wget -q https://downloads.imagej.net/fiji/latest/fiji-nojre.zip \ && unzip fiji-nojre.zip \ && rm fiji-nojre.zip -RUN wget -O- https://raw.githubusercontent.com/imagej/imagej/master/bin/ImageJ.sh |grep -v PermSize > Fiji.app/ImageJ.sh \ - && chmod u+x ./Fiji.app/ImageJ.sh # Add fiji to the PATH -ENV PATH $PATH:/fiji/Fiji.app +ENV PATH $PATH:/home/fiji/Fiji.app + +# Define entrypoint. +COPY entrypoint.sh /home/fiji +ENTRYPOINT ["./entrypoint.sh"] -# Define default command. -ENTRYPOINT ["bash", "ImageJ.sh", "--headless"] -CMD ["--help"] +# Run once to create Java preferences. +COPY demo.py /home/fiji/ +RUN ./entrypoint.sh --headless --ij2 --console --run ./demo.py 'name="test"' diff --git a/fiji-openjdk-8/demo.py b/fiji-openjdk-8/demo.py new file mode 100644 index 0000000..538e811 --- /dev/null +++ b/fiji-openjdk-8/demo.py @@ -0,0 +1,2 @@ +#@String name +print('Hello ' + name) diff --git a/fiji-openjdk-8/entrypoint.sh b/fiji-openjdk-8/entrypoint.sh new file mode 100755 index 0000000..368a19e --- /dev/null +++ b/fiji-openjdk-8/entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +IMAGEJ="ImageJ-linux64 --headless --default-gc" + +set -e + +if [[ $# -eq 0 ]] ; then + if [ -t 0 ] ; then + exec bash + else + exec $IMAGEJ --help + fi +else + exec $IMAGEJ "$@" +fi From d8410eaacb56598194d64bb2244a61c2822f3cb3 Mon Sep 17 00:00:00 2001 From: jmoore Date: Tue, 21 May 2019 14:45:06 +0100 Subject: [PATCH 07/10] Use gitter channel as maintainer (gh-15) --- fiji-openjdk-8/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fiji-openjdk-8/Dockerfile b/fiji-openjdk-8/Dockerfile index eb1ed64..9ac837c 100644 --- a/fiji-openjdk-8/Dockerfile +++ b/fiji-openjdk-8/Dockerfile @@ -6,7 +6,7 @@ FROM openjdk:8 # Define maintainer. -MAINTAINER Mark Hiner +LABEL maintainer="https://gitter.im/fiji/fiji" # Create a user. RUN useradd -u 1000 -ms /bin/bash fiji From 56c8277c64509734a29b571f1d92f96bd2af97d0 Mon Sep 17 00:00:00 2001 From: jmoore Date: Tue, 21 May 2019 15:06:06 +0100 Subject: [PATCH 08/10] Docs and backwards compatibility for entrypoint.sh --- fiji-openjdk-8/entrypoint.sh | 37 ++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/fiji-openjdk-8/entrypoint.sh b/fiji-openjdk-8/entrypoint.sh index 368a19e..b40f22b 100755 --- a/fiji-openjdk-8/entrypoint.sh +++ b/fiji-openjdk-8/entrypoint.sh @@ -1,15 +1,44 @@ #!/bin/bash +# +# Entrypoint for the docker image which tries to do +# the most sensible thing for the user: +# +# (A) If no arguments are passed, print help: +# $ docker run fiji +# +# (B) If no arguments are passed but a ternimal is requested, open a shell: +# $ docker run -ti fiji +# +# (C) Otherwise, assume arguments are to be passed to ImageJ-linux64: +# $ docker run fiji --console --run /my/script.py +# +# (D) Unless, the command starts with an executable, in which case run it: +# $ docker run fiji ImageJ-linux64 --console --run /my/script.py -IMAGEJ="ImageJ-linux64 --headless --default-gc" +# Command run by default +IMAGEJ=${IMAGEJ:-"ImageJ-linux64 --headless --default-gc"} + +# For debugging purposes +RUN=${RUN:-exec} set -e if [[ $# -eq 0 ]] ; then if [ -t 0 ] ; then - exec bash + # (B) start a shell + $RUN bash else - exec $IMAGEJ --help + # (A) print help and exit + $RUN $IMAGEJ --help fi else - exec $IMAGEJ "$@" + COMMAND=$1 + if command -v "$COMMAND" >/dev/null 2>&1; then + # (D) if the user has passed e.g. ImageJ-linux64, + # then run it verbatim for backwards compatibility + $RUN "$@" + else + # (C) Expected usage + $RUN $IMAGEJ "$@" + fi fi From 6c95d8dd38598b50645c5856483b1d118fdb66fa Mon Sep 17 00:00:00 2001 From: Ola Tarkowska Date: Tue, 21 May 2019 15:10:00 +0100 Subject: [PATCH 09/10] add travis --- .travis.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..d49cfe0 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,10 @@ +sudo: required +services: + - docker + +env: + - JAVA_VERSION=openjdk-8 + +script: + - docker build -t fiji-$JAVA_VERSION fiji-$JAVA_VERSION + - docker run --rm -v fiji-$JAVA_VERSION/macro.ijm:/opt/macro.ijm fiji-$JAVA_VERSION -macro /opt/macro.ijm test From 0e1a5e1f3c79fdadcf4a5f36384faae08dcbef84 Mon Sep 17 00:00:00 2001 From: jmoore Date: Tue, 21 May 2019 15:25:59 +0100 Subject: [PATCH 10/10] Move to /opt/fiji --- .travis.yml | 2 +- fiji-openjdk-8/Dockerfile | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index d49cfe0..cd6fde9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,4 +7,4 @@ env: script: - docker build -t fiji-$JAVA_VERSION fiji-$JAVA_VERSION - - docker run --rm -v fiji-$JAVA_VERSION/macro.ijm:/opt/macro.ijm fiji-$JAVA_VERSION -macro /opt/macro.ijm test + - docker run --rm fiji-$JAVA_VERSION --ij2 --console --run ./demo.py 'name="travis"' diff --git a/fiji-openjdk-8/Dockerfile b/fiji-openjdk-8/Dockerfile index 9ac837c..52d95d4 100644 --- a/fiji-openjdk-8/Dockerfile +++ b/fiji-openjdk-8/Dockerfile @@ -10,10 +10,11 @@ LABEL maintainer="https://gitter.im/fiji/fiji" # Create a user. RUN useradd -u 1000 -ms /bin/bash fiji +RUN mkdir /opt/fiji && chown fiji:fiji /opt/fiji USER fiji # Define working directory. -WORKDIR /home/fiji +WORKDIR /opt/fiji # Install Fiji. RUN wget -q https://downloads.imagej.net/fiji/latest/fiji-nojre.zip \ @@ -21,12 +22,12 @@ RUN wget -q https://downloads.imagej.net/fiji/latest/fiji-nojre.zip \ && rm fiji-nojre.zip # Add fiji to the PATH -ENV PATH $PATH:/home/fiji/Fiji.app +ENV PATH $PATH:/opt/fiji/Fiji.app # Define entrypoint. -COPY entrypoint.sh /home/fiji +COPY --chown=fiji:fiji entrypoint.sh /opt/fiji ENTRYPOINT ["./entrypoint.sh"] # Run once to create Java preferences. -COPY demo.py /home/fiji/ +COPY --chown=fiji:fiji demo.py /opt/fiji/ RUN ./entrypoint.sh --headless --ij2 --console --run ./demo.py 'name="test"'