GithubHelp home page GithubHelp logo

fiji / dockerfiles Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 9.0 28 KB

Fiji Dockerfiles for Docker builds.

Home Page: https://registry.hub.docker.com/u/fiji/fiji/

Dockerfile 63.84% Makefile 16.72% Python 0.61% Shell 18.83%

dockerfiles's Introduction

developer chat Image.sc Forum

[ Fiji Is Just ImageJ ]

Fiji is a "batteries-included" distribution of ImageJ—a popular, free scientific image processing application—which includes a lot of plugins organized into a coherent menu structure. Fiji compares to ImageJ as Ubuntu compares to Linux.

The main focus of Fiji is to assist research in life sciences.

At the moment, the following platforms are supported:

  • Windows Intel 32-bit/64-bit
  • Linux Intel 32-bit/64-bit
  • MacOSX Intel 32-bit/64-bit (partial support for PowerPC 32-bit)
  • all platforms supporting Java and a POSIX shell, via bin/ImageJ.sh

The setup is as easy as unpacking the portable archive and double-clicking the ImageJ launcher.

Fiji is intended to be the most painless, easy, quick and convenient way to install ImageJ and plugins and keep everything up-to-date.

Usage

Fiji is meant to be distributed without source, to make the download as small as possible. In the basic version, Fiji is a portable application, i.e. it should run wherever you copy it.

The starting point is the ImageJ launcher, which will launch Java, set up the environment, and call ImageJ.

To pass arguments to ImageJ, just specify them on the command line.

To pass arguments to the Java Virtual Machine, specify them on the command line, separating them from the ImageJ arguments (if any) with a --. In other words, if you want to override the memory setting, call Fiji like this:

$ ./ImageJ-linux32 -Xmx128m --

Open Source

We are dedicated to open source. Not only does open source allow other developers to port the application to new platforms that the original authors did not begin to think of, it allows scientists to study the code to understand the inner workings of the algorithms used, and it permits others to use the program in totally new ways, and enhance it in all imaginable ways.

Therefore, the majority of Fiji is licensed under the GNU Public License version 2. Exceptions are listed in the LICENSES file.

Fiji's source code is split up into a main repository, containing the top-level project and support scripts, while all components live in their own repositories in the Fiji organization on GitHub. As a rule of thumb: the file name and the project name correspond pretty well, e.g. fiji-compat.jar is maintained in fiji-compat.

Participating

Pull Requests are very welcome!

See the Contributing page of the ImageJ wiki.

Authors

  • Fiji was created by Johannes Schindelin. It is currently maintained by Curtis Rueden of LOCI at the University of Wisconsin-Madison.
  • ImageJ 1.x was created and is maintained by Wayne Rasband.
  • ImageJ2 was created and is maintained and actively developed by Curtis Rueden.
  • For a list of most recent contributors, please refer to the Contributors page of the ImageJ wiki.

Thanks

We are very grateful to Wayne Rasband, who is not only a very dedicated developer of ImageJ 1.x; he also fosters an active and friendly community around ImageJ.

We are especially grateful to be part of an outstanding community who is active, friendly and helping to scientists understanding and analysing images every day.

Oh, and Fiji is also an island. We just wanted to let you know.

dockerfiles's People

Contributors

atarkowska avatar chigozienri avatar ctrueden avatar hinerm avatar joshmoore avatar stark1tty avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dockerfiles's Issues

Docker build shows an error but passes

Building openjdk-8:

Downloading... (jars/win64/ffmpeg-2.6.1-0.11-windows-x86_64.jar)
Downloading... 182861221/196480600
Downloading... 183867581/196480600
[ERROR] Error updating
java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(SocketInputStream.java:210)
	at java.net.SocketInputStream.read(SocketInputStream.java:141)
	at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
	at sun.net.www.MeteredStream.read(MeteredStream.java:134)
	at java.io.FilterInputStream.read(FilterInputStream.java:133)
	at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3444)
	at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3437)
	at net.imagej.updater.util.Downloader.download(Downloader.java:128)
	at net.imagej.updater.util.Downloader.start(Downloader.java:98)
	at net.imagej.updater.Installer.start(Installer.java:154)
	at net.imagej.updater.CommandLine.update(CommandLine.java:572)
	at net.imagej.updater.CommandLine.main(CommandLine.java:1456)
	at net.imagej.updater.CommandLine.main(CommandLine.java:1375)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at java.lang.invoke.MethodHandleImpl$BindCaller$T/633079302.invoke_V(MethodHandleImpl.java:1258)
	at jdk.nashorn.internal.scripts.Script$1$bootstrap.:program(bootstrap.js:329)
	at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)
	at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
	at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:449)
	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)
	at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:402)
	at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:150)
	at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
	at com.sun.tools.script.shell.Main.evaluateReader(Main.java:332)
	at com.sun.tools.script.shell.Main.evaluateStream(Main.java:368)
	at com.sun.tools.script.shell.Main.processSource(Main.java:285)
	at com.sun.tools.script.shell.Main.access$100(Main.java:37)
	at com.sun.tools.script.shell.Main$2.run(Main.java:200)
	at com.sun.tools.script.shell.Main.main(Main.java:48)
Removing intermediate container daeb559d597a
 ---> f9b930333063
Step 5/6 : ENV PATH $PATH:/fiji
 ---> Running in daebc961fa7e
Removing intermediate container daebc961fa7e
 ---> 3073ca9954d5
Step 6/6 : CMD ["fiji-linux64"]
 ---> Running in 8ae4ac1ec07b
Removing intermediate container 8ae4ac1ec07b
 ---> db0ac7ba3fcb
Successfully built db0ac7ba3fcb
Successfully tagged fiji-openjdk-8:latest

Building openjdk-7:

Downloading... (jars/win64/ffmpeg-2.6.1-0.11-windows-x86_64.jar)
jars/win64/ffmpeg-2.6.1-0.11-windows-x86_64.jar done
jars/win64/ffmpeg-2.6.1-0.11-windows-x86_64.jar done
[ERROR] Error updating
java.lang.RuntimeException: Incorrect file size for /fiji/update/jars/win64/ffmpeg-2.6.1-0.11-windows-x86_64.jar: 938 (expected 14494335)
	at net.imagej.updater.Installer.verify(Installer.java:293)
	at net.imagej.updater.Installer$VerifyFiles.itemDone(Installer.java:270)
	at net.imagej.updater.util.AbstractProgressable.itemDone(AbstractProgressable.java:87)
	at net.imagej.updater.util.Downloader.download(Downloader.java:138)
	at net.imagej.updater.util.Downloader.start(Downloader.java:98)
	at net.imagej.updater.Installer.start(Installer.java:154)
	at net.imagej.updater.CommandLine.update(CommandLine.java:572)
	at net.imagej.updater.CommandLine.main(CommandLine.java:1456)
	at net.imagej.updater.CommandLine.main(CommandLine.java:1375)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at sun.org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
	at sun.org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)
	at sun.org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1473)
	at sun.org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815)
	at sun.org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
	at sun.org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
	at com.sun.script.javascript.RhinoScriptEngine$1.superDoTopCall(RhinoScriptEngine.java:116)
	at com.sun.script.javascript.RhinoScriptEngine$1.doTopCall(RhinoScriptEngine.java:109)
	at sun.org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
	at sun.org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:120)
	at sun.org.mozilla.javascript.Context.evaluateReader(Context.java:1110)
	at com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:214)
	at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
	at com.sun.tools.script.shell.Main.evaluateReader(Main.java:332)
	at com.sun.tools.script.shell.Main.evaluateStream(Main.java:368)
	at com.sun.tools.script.shell.Main.processSource(Main.java:285)
	at com.sun.tools.script.shell.Main.access$100(Main.java:37)
	at com.sun.tools.script.shell.Main$2.run(Main.java:200)
	at com.sun.tools.script.shell.Main.main(Main.java:48)
Removing intermediate container 0b5ae1a5a5f7
 ---> 0f00e5bcef7a
Step 5/6 : ENV PATH $PATH:/fiji
 ---> Running in d1dfe984941f
Removing intermediate container d1dfe984941f
 ---> 2592eed30a73
Step 6/6 : CMD ["fiji-linux64"]
 ---> Running in 29eb201cb03a
Removing intermediate container 29eb201cb03a
 ---> 1dfc6fbbde56
Successfully built 1dfc6fbbde56
Successfully tagged fiji-openjdk-7:latest

singularity?

just wondering, I just tested the openjdk-7 docker image with singularity and it doesn't work. :( however, if I port the respective dockerfile from this repo to Singularity lingo and build a container, I can fiji with GUI without tempering with DISPLAY and artificially created users. Would anyone be interested in that file?

Reuse base image for gui apps

The steps for running Fiji as a GUI application are currently extremely convoluted, and platform-specific.

We should convert our dockerfiles to use a common base image configured for VNC or X11 usage. All the popular images on Docker hub are geared towards web browser use though so we will likely need to create our own modular base, and then figure out how to flexibly merge them with the various Java bases (e.g. with multiple FROM statements).

At the least, hopefully we can simplify the steps for using Fiji in Docker on Linux. Ideally there will be better OSX solutions too.

port7 option with fiji-linux64

Hi,
I'm trying to use fiji docker image and I have an error when I run the fiji-linux64 command:
[ERROR] Skipping unsupported option -port7
This issue has been fixed two years ago (imagej/ImageJ#98).
Could you regenarate the image with a recent imagej?

Migrate+update the documentation

There is documentation on the ImageJ wiki. In my view it makes sense to migrate that to this repository here, probably into the README. And then update the wiki page to be more of a stub, explaining that ImageJ/Fiji can be used with Docker, and linking to the GitHub repository for the main documentation. (Rule of thumb: end-user-oriented things documented on the wiki; technical/programmer things documented on GitHub and linked from the wiki.)

Script does not run in headless mode

Hi, I just started using ImageJ and Docker a little ago, I'm trying to run a script, but an error keeps popping up. This is my command

sudo docker run -it --rm fiji/fiji fiji-linux64 --headless --run /path/to/script.txt 'file=/path/to/image/IMG_8919.JPG output_path=/path'

I also have the same file saved as a macro but the same error pops for both:

java.lang.IllegalArgumentException: Could not handle HTTPS in public boolean install(java.lang.String path) in ij.plugin.PluginInstaller
at net.imagej.patcher.CodeHacker.handleHTTPS(CodeHacker.java:1221)
at net.imagej.patcher.LegacyExtensions.injectHooks(LegacyExtensions.java:286)
at net.imagej.patcher.LegacyInjector.inject(LegacyInjector.java:308)
at net.imagej.patcher.LegacyInjector.injectHooks(LegacyInjector.java:109)
at net.imagej.patcher.LegacyEnvironment.initialize(LegacyEnvironment.java:101)
at net.imagej.patcher.LegacyEnvironment.applyPatches(LegacyEnvironment.java:495)
at net.imagej.patcher.LegacyInjector.preinit(LegacyInjector.java:397)
at net.imagej.patcher.LegacyInjector.preinit(LegacyInjector.java:376)
at fiji.IJ1Patcher.run(IJ1Patcher.java:37)
at net.imagej.launcher.ClassLauncher.patchIJ1(ClassLauncher.java:195)
at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:154)
at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:76)
Feb 14, 2019 2:49:43 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Unrecognized command: "/path/to/script.txt"
[ERROR] Skipping unsupported option -port7

What could be causing this and how could I solve it?

Thank you :)

Error running update

Hello,

I am getting an error with both tag latest and fiji-openjdk-8
Here is my Dockerfile

FROM fiji/fiji:fiji-openjdk-8                                                   
RUN /opt/fiji/entrypoint.sh --update add-update-site BigStitcher https://sites.imagej.net/BigStitcher/
RUN /opt/fiji/entrypoint.sh --update update

The last action throws this error:

Error while executing the main() method of class 'net.imagej.updater.CommandLine':
java.util.ServiceConfigurationError: java.nio.charset.spi.CharsetProvider: Error reading configuration file
	at java.util.ServiceLoader.fail(ServiceLoader.java:232)
	at java.util.ServiceLoader.parse(ServiceLoader.java:309)
	at java.util.ServiceLoader.access$200(ServiceLoader.java:185)
	at java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:357)
	at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:393)
	at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474)
	at java.nio.charset.Charset$1.getNext(Charset.java:350)
	at java.nio.charset.Charset$1.hasNext(Charset.java:365)
	at java.nio.charset.Charset$2.run(Charset.java:410)
	at java.nio.charset.Charset$2.run(Charset.java:407)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.nio.charset.Charset.lookupViaProviders(Charset.java:406)
	at java.nio.charset.Charset.lookup2(Charset.java:477)
	at java.nio.charset.Charset.lookup(Charset.java:464)
	at java.nio.charset.Charset.forName(Charset.java:528)
	at com.sun.org.apache.xml.internal.serializer.Encodings$EncodingInfos.findCharsetNameFor(Encodings.java:386)
	at com.sun.org.apache.xml.internal.serializer.Encodings$EncodingInfos.findCharsetNameFor(Encodings.java:422)
	at com.sun.org.apache.xml.internal.serializer.Encodings$EncodingInfos.loadEncodingInfo(Encodings.java:450)
	at com.sun.org.apache.xml.internal.serializer.Encodings$EncodingInfos.<init>(Encodings.java:308)
	at com.sun.org.apache.xml.internal.serializer.Encodings$EncodingInfos.<init>(Encodings.java:296)
	at com.sun.org.apache.xml.internal.serializer.Encodings.<clinit>(Encodings.java:564)
	at com.sun.org.apache.xml.internal.serializer.ToStream.<init>(ToStream.java:134)
	at com.sun.org.apache.xml.internal.serializer.ToXMLStream.<init>(ToXMLStream.java:67)
	at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.<init>(ToUnknownStream.java:143)
	at com.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:159)
	at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:445)
	at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerHandlerImpl.setResult(TransformerHandlerImpl.java:146)
	at net.imagej.updater.XMLFileWriter.createHandler(XMLFileWriter.java:279)
	at net.imagej.updater.XMLFileWriter.write(XMLFileWriter.java:147)
	at net.imagej.updater.FilesCollection.write(FilesCollection.java:433)
	at net.imagej.updater.CommandLine.update(CommandLine.java:574)
	at net.imagej.updater.CommandLine.update(CommandLine.java:515)
	at net.imagej.updater.CommandLine.update(CommandLine.java:511)
	at net.imagej.updater.CommandLine.main(CommandLine.java:1452)
	at net.imagej.updater.CommandLine.main(CommandLine.java:1375)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:279)
	at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:186)
	at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:77)
Caused by: java.io.FileNotFoundException: /opt/fiji/Fiji.app/jars/jcodings-1.0.27.jar (No such file or directory)
	at java.util.zip.ZipFile.open(Native Method)
	at java.util.zip.ZipFile.<init>(ZipFile.java:225)
	at java.util.zip.ZipFile.<init>(ZipFile.java:155)
	at java.util.jar.JarFile.<init>(JarFile.java:166)
	at java.util.jar.JarFile.<init>(JarFile.java:103)
	at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:93)
	at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)
	at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:84)
	at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
	at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:152)
	at java.net.URL.openStream(URL.java:1045)
	at java.util.ServiceLoader.parse(ServiceLoader.java:304)
	... 40 more

Any thoughts?

Cheers!
Tong

Test on Windows

Haven't tried any of these dockerfiles on Windows yet, so I'm not sure what's required to get GUI apps running.

fiji log goes to stderr

Would it be possible to correct logger level for the following commands?
Otherwise nextflow pipeline capture that as error

/opt/fiji/entrypoint.sh --update add-update-site PTBIOP http://biop.epfl.ch/Fiji-Update
/opt/fiji/entrypoint.sh --update update

seems to print to standard error of the system rather then out.

Updating the index of available files (Updating from ImageJ site: http://up...
Updating from ImageJ site: http://update.imagej.net/ done
...
Done: Checksummer

Updating the index of available files (Updating from ImageJ site: http://up...
Updating from ImageJ site: http://update.imagej.net/ done
...
Done: Checksummer

Downloading... (fiji-linux) 
...
plugins/JACoP_B-1.1.0.jar done
Done: Downloading...

Done: Downloading...

Temporarily I had to add >/dev/stdout 2>&1 to each command

Download specific version

# Install Fiji.
RUN wget -q https://downloads.imagej.net/fiji/latest/fiji-nojre.zip \
&& unzip fiji-nojre.zip \
&& rm fiji-nojre.zip

Is there a way to download a specific version of Fiji from the download site? I would like to create a Docker image with Fiji locked to a specific version like 2.2.0. At the moment, I think ``https://downloads.imagej.net/fiji/latest` points to 2.3.1 and `https://downloads.imagej.net/fiji/archive/` only has `2.1.0`

Docker on OS X

Hi, are you planning to update the OS X instruction to run UI. I'm having problems with running and not sure if this is because I'm not using boot2docker. I'm just using Docker for Mac.

btw. Does this image can be also used to run ClearVolume?

update containers with OCI labels

MAINTAINER command is deprecated. Instead:

LABEL maintainer="..."
LABEL org.opencontainers.image.created="unknown"
LABEL org.opencontainers.image.revision="unknown"
LABEL org.opencontainers.image.source="..."

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.