Orthanc Docker Performances

Hi There,

I have a few simple questions about running Orthanc in Docker and it’s performances.
I have to run 2 sessions of Orthanc in a LAMP server.
One of them is only for reciving DICOM from the internet, the second one is for server local-only long term storage.

I managed to make a docker-compose that install everyhing in one single script (2 Orthanc + 1 mySQL container for the long term storage).
The result is very nice as it is really helpful to setup the server in seconds.

My questions are about the performance of a such install :

  1. I know that Orthanc can manage TBs of DICOM without any problem, is it true also for an Orthanc Docker install ? It there experience of storing TBs of DICOM with an Orhanc installed with Docker and using it for years without troubles ?

  2. Is there some performance difference between executing orthanc with the standalone executable or through a docker install ? (especially in terme of speed of the tool/archive API for zip generation for example)

  3. My Local Orthanc storage should be not accessible from remote connection but in Docker I can’t put the “remote access : false” settings. However I should be able to disallow external connection on this Orthanc session with the firewall. Such port filtering is it as safe as the “remote access : false” settings in the Orthanc.json ?

Thanks for your answers, I have to choose between a standalone install or a Docker install of Orthanc.
The Docker install have the huge advantage to automatize all the install process in a single script and facilitate the server deployment but it has to be as stable and secured that the standalone install to be suitable,

Best regards,

Salim

Hi Salim,

  1. We have customers with TBs of DICOM stored in Orthanc running on Docker. There is no issues with that.

  2. I haven’t done a comparison, but I guess that performance is quite similar with both standalone and docker install…

  3. you can use the env var 'AC_ALLOW_REMOTE’in order to prevent remote connection. See that documentation: https://osimis.atlassian.net/wiki/spaces/OKB/pages/26738689/How+to+use+osimis+orthanc+Docker+images
    I would also manage the firewall in order to make system as safe as possible…

In my opinion, docker is really a good tool and allow to save a lot of time…

HTH,
Benoit

Thanks for you answer, really helpfull !
So I will continue to make my Orthanc Docker setup and fine tune my server,
Thanks !

Just another question,

The “local orthanc session” is for localhost only but have to be reachable by my Php server which is on the localhost but not in the container itself.
the AC_ALLOW_REMOTE seems to be the same parameter than “RemoteAccessAllowed” from Orthanc.json, isn’t going to kill possibility for my Php server to reach this orthanc session ?
If it is can I realy only on the firewall ?

Maybe also I may add a lua script that will refuse all incoming request that will not come from the server itself as additional security with the firewall

Salim

Indeed, AC_ALLOW_REMOTE will generate the json conf file with RemoteAccessAllowed value.
And so, your Php server won’t be longer able to reach this Orthanc.
So the firewall is the right way (I wouldn’t go for a lua script in that case).

BTW, why don’t you run your php server on Docker?

Thanks for clarifications

BTW, why don’t you run your php server on Docker?

=> Well, because I would have to know how to build such php server in Docker which is not yet the case.

Actually i’m physician, to make my project I learned php / mysql / html / css from scratch.
I may need to add docker in the list as well :-\

Do you have any documentation that I can explore to make my Php server in the container ?
I guess I will have to build a full Docker container containing my website and it’s environment ?

Salim

Dear Benoit,

I’m stuck on a problem,
I want to force docker to write the storage folder in the host.

If I use paramater as
volumes: [“storage:/var/lib/orthancExposed/db:Z”]

I see docker create a “storage” volume which is normal (internal volum, can’t access the file)

I tried to exposed the storage to the host using
volumes: [“/var/lib/orthanc:/var/lib/orthancPacs/db:Z”]

But the local directory stays empty.

Do you have an idea how I can force docker to write the orthanc storage directory to a regular folder in my host (not internally).

This is for backup procedure, the goal is to make a sync protocol with this storage folder to another server so in case of problem I have a backup of the DICOM to rebuild the server,

Best regards,

Salim

Apologies I got it, the volumes are stored in /var/bin/docker/volumes/{name}
and their content is accessible
So forget my last message, sorry !

Hi there,

Just for putting here the solution in case anyone else would have the same need.

Rather then exposing my orthanc session that I want only locally and then filter incoming request on the 8042 port by the firewall.
I told Docker to only expose the 8042 port to the localhost (127.0.0.1), so the orthanc session is not exposed to the external access.

To do this I simply wrote in the compose.yml
ports: [“127.0.0.1:8042:8042”]

Best regards,

salim