docker vs usual Orthanc install

I’m going to start a new thread after my Ubuntu etc/oethanc question. After I did a apt-intall on orthanc my computer began to respond but I couldn’t control the user list.
Finally it occurred to me that I may be doing something basically wrong. It seems to me now that docker contains its own complete copy of orthanc and it was an error for me to install Orthanc. It is my local copy which is responding and not the docker version. What I need to do is purge the local copy so that only the docker version can run.
Is this correct?
If it is, I need to continue to investigate why the docker version won’t answer in my browser.

First though, I need a confirmation on the basic question if to purge the local copy or not.

Sure, if you use Orthanc through Docker, you don’t need to install Orthanc locally and Docker will not use the configuration files that are stored in your ubuntu /etc/orthanc/…

Thanks Alain,
That is at least a sanity check. Before I entered the local orthanc, the server wouldn’t answer. When I entered it all my games with the docker gave no change in my registered user - no matter what I did! When I did “docker-compose down” and the browser answered in exactly the same way, I knew I had total nonsense. The docker was clearly doing nothing at all.

Now that I purged the local copy, I’ve returned to the previous state where the browser doesn’t answer. Again as a sanity check I do:
ilan@ilan-Lenovo-G585:~/OrthancInstall$ docker-compose up --build
Creating network “orthancinstall_default” with the default driver
Building orthanc
Step 1/2 : FROM osimis/orthanc:17.6.1
—> 7fbc9b606786
Step 2/2 : COPY orthanc.json /etc/orthanc/
—> Using cache
—> 7ac4d9da85fa
Successfully built 7ac4d9da85fa
Successfully tagged orthancinstall_orthanc:latest
Creating orthancinstall_orthanc-index_1 …
Creating orthancinstall_orthanc-index_1 … done
Creating orthancinstall_orthanc_1 …
Creating orthancinstall_orthanc_1 … done
Attaching to orthancinstall_orthanc-index_1, orthancinstall_orthanc_1
orthanc-index_1 | 2018-06-11 14:32:07.936 UTC [1] LOG: listening on IPv4 address “0.0.0.0”, port 5432
orthanc-index_1 | 2018-06-11 14:32:07.937 UTC [1] LOG: listening on IPv6 address “::”, port 5432
orthanc-index_1 | 2018-06-11 14:32:08.099 UTC [1] LOG: listening on Unix socket “/var/run/postgresql/.s.PGSQL.5432”
orthanc-index_1 | 2018-06-11 14:32:08.562 UTC [21] LOG: database system was shut down at 2018-06-11 08:37:17 UTC
orthanc-index_1 | 2018-06-11 14:32:09.018 UTC [1] LOG: database system is ready to accept connections
orthanc_1 | W0611 14:32:11.366739 main.cpp:1238] Orthanc version: 1.2.0
orthanc_1 | W0611 14:32:11.519830 OrthancInitialization.cpp:173] Scanning folder “/etc/orthanc” for configuration files
orthanc_1 | W0611 14:32:11.546172 OrthancInitialization.cpp:125] Reading the configuration from: “/etc/orthanc/orthanc.json”
orthanc_1 | W0611 14:32:11.570492 OrthancInitialization.cpp:125] Reading the configuration from: “/etc/orthanc/plugins.json”
orthanc_1 | W0611 14:32:11.581519 OrthancInitialization.cpp:125] Reading the configuration from: “/etc/orthanc/storage.json”
orthanc_1 | W0611 14:32:11.586938 OrthancInitialization.cpp:125] Reading the configuration from: “/etc/orthanc/remote-access.json”
orthanc_1 | W0611 14:32:11.620838 FromDcmtkBridge.cpp:189] Loading the embedded dictionaries
orthanc_1 | W0611 14:32:11.774638 OrthancInitialization.cpp:488] Registering JPEG Lossless codecs
orthanc_1 | W0611 14:32:11.775050 OrthancInitialization.cpp:493] Registering JPEG codecs
orthanc_1 | W0611 14:32:11.819033 main.cpp:632] Loading plugin(s) from: /usr/share/orthanc/plugins
orthanc_1 | W0611 14:32:11.862714 PluginsManager.cpp:268] Registering plugin ‘postgresql-storage’ (version 2.0)
orthanc_1 | W0611 14:32:11.863380 PluginsManager.cpp:167] The PostgreSQL storage area is currently disabled, set “EnableStorage” to “true” in the “PostgreSQL” section of the configuration file of Orthanc
orthanc_1 | W0611 14:32:12.042306 PluginsManager.cpp:268] Registering plugin ‘web-viewer’ (version 2.2)
orthanc_1 | W0611 14:32:12.045306 PluginsManager.cpp:167] Initializing the Web viewer
orthanc_1 | W0611 14:32:12.045873 PluginsManager.cpp:167] Web viewer using 1 threads for the decoding of the DICOM images
orthanc_1 | W0611 14:32:12.045909 PluginsManager.cpp:167] Storing the cache of the Web viewer in folder: /var/lib/orthanc/db/WebViewerCache
orthanc_1 | W0611 14:32:12.114388 PluginsManager.cpp:167] Web viewer using a cache of 100 MB
orthanc_1 | W0611 14:32:12.114490 PluginsManager.cpp:167] Using GDCM instead of the DICOM decoder that is built in Orthanc
orthanc_1 | W0611 14:32:12.336228 PluginsManager.cpp:268] Registering plugin ‘dicom-web’ (version 0.3)
orthanc_1 | W0611 14:32:12.343246 PluginsManager.cpp:167] URI to the DICOMweb REST API: /dicom-web/
orthanc_1 | W0611 14:32:12.344271 PluginsManager.cpp:167] URI to the WADO-URI API: /wado
orthanc_1 | W0611 14:32:12.532329 PluginsManager.cpp:268] Registering plugin ‘osimis-web-viewer’ (version 1.0.0.0-71fbc89)
orthanc_1 | W0611 14:32:12.532610 PluginsManager.cpp:167] Initializing the Web viewer
orthanc_1 | W0611 14:32:12.533106 PluginsManager.cpp:167] Using GDCM instead of the DICOM decoder that is built in Orthanc
orthanc_1 | W0611 14:32:12.615504 PluginsManager.cpp:268] Registering plugin ‘authorization’ (version 0.1.0)
orthanc_1 | W0611 14:32:12.615645 PluginsManager.cpp:167] Initializing the authorization plugin
orthanc_1 | W0611 14:32:12.616053 PluginsManager.cpp:167] No section “Authorization” in the configuration file, the authorization plugin is disabled
orthanc_1 | W0611 14:32:12.676726 PluginsManager.cpp:268] Registering plugin ‘wsi’ (version 0.4)
orthanc_1 | W0611 14:32:12.676876 PluginsManager.cpp:167] The whole-slide imaging plugin will use at most 2 threads to transcode the tiles
orthanc_1 | W0611 14:32:12.704746 PluginsManager.cpp:268] Registering plugin ‘postgresql-index’ (version 2.0)
orthanc_1 | W0611 14:32:12.705234 PluginsManager.cpp:167] Using PostgreSQL index
orthanc_1 | W0611 14:32:13.290155 PluginsManager.cpp:268] Registering plugin ‘serve-folders’ (version 1.2.0)
orthanc_1 | W0611 14:32:13.290880 PluginsManager.cpp:167] ServeFolders: Empty configuration file: No additional folder will be served!
orthanc_1 | W0611 14:32:13.313207 PluginsManager.cpp:268] Registering plugin ‘worklists’ (version 1.2.0)
orthanc_1 | W0611 14:32:13.313371 PluginsManager.cpp:167] Sample worklist plugin is initializing
orthanc_1 | W0611 14:32:13.314001 PluginsManager.cpp:167] Worklists server is disabled by the configuration file
orthanc_1 | W0611 14:32:13.314284 main.cpp:1047] Using a custom database from plugins
orthanc_1 | W0611 14:32:13.314436 OrthancInitialization.cpp:1056] Storage directory: “/var/lib/orthanc/db”
orthanc_1 | W0611 14:32:13.316092 HttpClient.cpp:685] HTTPS will use the CA certificates from this file: /etc/orthanc
orthanc_1 | W0611 14:32:13.404014 ServerScheduler.cpp:134] The server scheduler has started
orthanc_1 | W0611 14:32:13.438108 LuaContext.cpp:103] Lua says: Lua toolbox installed
orthanc_1 | W0611 14:32:13.440319 ServerContext.cpp:181] Disk compression is disabled
orthanc_1 | W0611 14:32:13.441550 ServerIndex.cpp:1402] No limit on the number of stored patients
orthanc_1 | W0611 14:32:13.444037 ServerIndex.cpp:1419] No limit on the size of the storage area
orthanc_1 | W0611 14:32:13.469209 main.cpp:822] DICOM server listening with AET ORTHANC1 on port: 4242
orthanc_1 | W0611 14:32:13.469350 MongooseServer.cpp:1027] HTTP compression is enabled
orthanc_1 | W0611 14:32:13.474160 main.cpp:757] HTTP server listening on port: 8042
orthanc_1 | W0611 14:32:13.474284 main.cpp:644] Orthanc has started

The most important thing looks like the last 2 lines
orthanc_1 | W0611 14:32:13.474160 main.cpp:757] HTTP server listening on port: 8042
orthanc_1 | W0611 14:32:13.474284 main.cpp:644] Orthanc has started
It is supposedly listening on port 8042, so why doesn’t it answer? Maybe answer that something is wrong but answer SOMETHING!!

Some minor points:
orthanc_1 | W0611 14:32:11.863380 PluginsManager.cpp:167] The PostgreSQL storage area is currently disabled, set “EnableStorage” to “true” in the “PostgreSQL” section of the configuration file of Orthanc
I think I can leave EnableStorage as false, because this is all I see in all the examples. My guess is that it means if I want to store the data files in the database itself, and orthanc wants to store them elsewhere.

orthanc_1 | W0611 14:32:12.532610 PluginsManager.cpp:167] Initializing the Web viewer
looks very good, which means I should see it, if the server would answer the basic call.

orthanc_1 | W0611 14:32:12.616053 PluginsManager.cpp:167] No section “Authorization” in the configuration file, the authorization plugin is disabled
This looks a bit worrisome and I may have to deal with it if I can get past the first response.

If I do a docker-compose down followed by docker-compose up --build -d (with the -d switch) the output is much smaller
ilan@ilan-Lenovo-G585:~/OrthancInstall$ docker-compose up --build -d
Creating network “orthancinstall_default” with the default driver
Building orthanc
Step 1/2 : FROM osimis/orthanc:17.6.1
—> 7fbc9b606786
Step 2/2 : COPY orthanc.json /etc/orthanc/
—> Using cache
—> ab47eb4daf86
Successfully built ab47eb4daf86
Successfully tagged orthancinstall_orthanc:latest
Creating orthancinstall_orthanc-index_1 …
Creating orthancinstall_orthanc-index_1 … done
Creating orthancinstall_orthanc_1 …
Creating orthancinstall_orthanc_1 … done

The first and foremost problem is that the server simply fails to answer in any way. It just times out.
I am really stuck on what to do. I reformatted the Linux partition once and I doubt that a second reformat will make any difference.
A ping to the IP works, but I get no answer on http://192.168.1.23:8042/. (The Internet address is slightly different at home so the IP is not the same.)

Thanks for any help which you can possibly give me.
Ilan

Hi Ilan

Is your webserver’s port 8042 open and listening? Your docker orthanc is running fine based on those logs, the problem seems to be that your web server is not accepting traffic on 8042.

Hi Deon,
Great to hear from you again.
This is my basic reasoning on if the problem is on the web server - When I put in the local copy of orthanc, I thought the docker was magically using it. Clearly I was using the standard port of 8042, and the server answered asking for a user name and pw. All my attempts to get a legal user were futile because I was trying to go through docker and the problem was on the local copy.
Finally I realized I was doing total nonsense and after confirmation of my sanity check I purged the local copy. As far as I know the web server on 8042 should listen just as well from a source on docker as to a local copy? Maybe there is some magic I am missing?

Ilan

I haven’t seen a docker-compose.yml file for bringing up Orthanc. Did you compose that yourself? Or are you running this in a directory with a Dockerfile?

I ask because both standard docker command line and docker-compose offer the ability to map different ports on the host to ports on the container. So, while your container may be listening happily on 8042 inside, it’s possible that the port was mapped to a different port on the host or even no port at all. Docker makes these distinctions between publishing, exposing, or doing nothing at all with a port that you might need to look into.

A useful command when things are up and running would be to run “docker inspect” against the container name from another window. Or even a “docker ps -a”. Either should list what ports are open and published, as well as whether there are mappings between the host and the container.

I assume you are trying to reach the Orthanc from a browser running on the same host as the container? If not, you might check whether the host firewall is blocking you, or even whether your host institution has some firewall between you and the Orthanc.

Finally, I don’t think it should matter that you launched a local and a docker version of Orthanc. Sure, if you used the same port in the json configuration, they might clash. But I believe Orthanc should be quite happy to run many different instances (including local and docker installations) as long as each was given unique ports and other identifying settings (ex. AET) within the json configuration files.