Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
today = $(shell date +%Y%m%d)

latest = fiji-openjdk-8

images = \
$(latest) \
fiji-openjdk-7

## 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 :
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
docker rmi fiji/fiji:latest

.PHONY: all update build release clean $(images)
23 changes: 16 additions & 7 deletions fiji-openjdk-8/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,25 @@ FROM openjdk:8
# Define maintainer.
MAINTAINER Mark Hiner <[email protected]>

# Create a user.
RUN useradd -u 1000 -ms /bin/bash fiji
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can run container as --user 1000:1000

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely, but then you can't use --update add-update-site, etc. can you? Certainly you get a warning from ImageJ warning that the installation is read-only.

Copy link
Contributor

@atarkowska atarkowska May 20, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Details:

$ docker build -t fiji:latest fiji_base
Sending build context to Docker daemon  3.584kB
Step 1/7 : FROM openjdk:8
8: Pulling from library/openjdk
c5e155d5a1d1: Pull complete 
221d80d00ae9: Pull complete 
4250b3117dca: Pull complete 
3b7ca19181b2: Pull complete 
1eadaf4c0dff: Pull complete 
4c1388ac89fe: Pull complete 
73713755b9cb: Pull complete 
5784ff1c0372: Pull complete 
Digest: sha256:db664aeefa56cb74b1c967089a064c9a1f9d3db33def7eb08c26c2afe8f137f0
Status: Downloaded newer image for openjdk:8
 ---> bec43387959a
Step 2/7 : MAINTAINER Mark Hiner <[email protected]>
 ---> Running in 524515e9ffeb
Removing intermediate container 524515e9ffeb
 ---> 01d838ff7d04
Step 3/7 : WORKDIR /opt/fiji
 ---> Running in 39b17bdc5757
Removing intermediate container 39b17bdc5757
 ---> 17635fbcbc06
Step 4/7 : RUN wget -q https://downloads.imagej.net/fiji/latest/fiji-nojre.zip  && unzip fiji-nojre.zip  && rm fiji-nojre.zip
 ---> Running in 01db403bf91c
Archive:  fiji-nojre.zip
  inflating: Fiji.app/db.xml.gz      
  inflating: Fiji.app/Contents/Info.plist  
  inflating: Fiji.app/Contents/MacOS/ImageJ-macosx  
  inflating: Fiji.app/Contents/MacOS/ImageJ-tiger  
  ...
  inflating: Fiji.app/retro/retrotranslator-transformer-1.2.9.jar  
Removing intermediate container 01db403bf91c
 ---> 3891fdcac799
Step 5/7 : ENV PATH $PATH:/opt/fiji/Fiji.app
 ---> Running in 07ddf06b0f97
Removing intermediate container 07ddf06b0f97
 ---> fde411c2f437
Step 6/7 : COPY entrypoint.sh /opt/fiji
 ---> ae4684674287
Step 7/7 : ENTRYPOINT ["./entrypoint.sh"]
 ---> Running in d5f1f226adee
Removing intermediate container d5f1f226adee
 ---> 1b8de562c55e
Successfully built 1b8de562c55e
Successfully tagged fiji:latest
$ docker build -t fiji_biop:latest fiji
Sending build context to Docker daemon  13.31kB
Step 1/5 : FROM fiji:latest
 ---> 1b8de562c55e
Step 2/5 : RUN ./entrypoint.sh --update add-update-site PTBIOP http://biop.epfl.ch/Fiji-Update
 ---> Running in 363adaca211d
Updating the index of available files (Updating from ImageJ site: http://up...
Updating from ImageJ site: http://update.imagej.net/ done
Updating the index of available files (Updating from Fiji site: http://upda...
Updating from Fiji site: http://update.fiji.sc/ done
Updating the index of available files (Updating from Java-8 site: http://si...
Updating from Java-8 site: http://sites.imagej.net/Java-8/ done
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
........................................
Done: Checksummer

Removing intermediate container 363adaca211d
 ---> a623796983c8
Step 3/5 : RUN ./entrypoint.sh --update update
 ---> Running in 9c8d726de1f6
Updating the index of available files (Updating from ImageJ site: http://up...
Updating from ImageJ site: http://update.imagej.net/ done
Updating the index of available files (Updating from Fiji site: http://upda...
Updating from Fiji site: http://update.fiji.sc/ done
Updating the index of available files (Updating from Java-8 site: http://si...
Updating from Java-8 site: http://sites.imagej.net/Java-8/ done
Updating the index of available files (Updating from PTBIOP site: http://bi...
Updating from PTBIOP site: http://biop.epfl.ch/Fiji-Update/ done
................................................................................

Done: Checksummer

Step 5/5 : CMD ["--headless"]
 ---> Running in c538eac03832
Removing intermediate container c538eac03832
 ---> 293c584578c2
Successfully built 293c584578c2
Successfully tagged fiji_biop:latest
2$ docker run --rm -v /data:/data fiji_biop:latest  -macro /data/macro.ijm /data/test#/data/out 
May 20, 2019 11:52:32 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
[INFO] Overriding BIOP Run Macro...; identifier: command:ch.epfl.biop.macrorunner.B_Run_Macro; jar: file:/opt/fiji/Fiji.app/plugins/BIOP/B_Run_Macro-1.0.0-SNAPSHOT.jar
[INFO] Overriding Get Spine From Circle Rois; identifier: command:Cirlces_Based_Spine; jar: file:/opt/fiji/Fiji.app/plugins/Max_Inscribed_Circles-1.1.0.jar
Parsing XML File... please wait

I dont see any readonly

Copy link
Member Author

@joshmoore joshmoore May 21, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know what dockerfiles you are building from, but I'm going to guess that in your fiji_base you are using USER root. That's one thing I got rid of. I very much prefer to not run root-based dockers on my systems.

USER fiji

# Define working directory.
WORKDIR /fiji
WORKDIR /home/fiji

# Install Fiji.
RUN \
curl -O https://update.imagej.net/bootstrap.js && \
jrunscript bootstrap.js update-force-pristine
RUN wget -q https://downloads.imagej.net/fiji/latest/fiji-nojre.zip \
&& unzip fiji-nojre.zip \
&& rm fiji-nojre.zip

# Add fiji to the PATH
ENV PATH $PATH:/fiji
ENV PATH $PATH:/home/fiji/Fiji.app

# Define entrypoint.
COPY entrypoint.sh /home/fiji
ENTRYPOINT ["./entrypoint.sh"]

# Define default command.
CMD ["fiji-linux64"]
# Run once to create Java preferences.
COPY demo.py /home/fiji/
RUN ./entrypoint.sh --headless --ij2 --console --run ./demo.py 'name="test"'
2 changes: 2 additions & 0 deletions fiji-openjdk-8/demo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#@String name
print('Hello ' + name)
15 changes: 15 additions & 0 deletions fiji-openjdk-8/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -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