H5serv and h5pyd setup


#1

Hello everyone!

I am currently trying to build my first h5serv server to host some HDF5 files that are meant to be accessed from my python-written web application through h5pyd.

I have set up a h5serv server using Docker with this image: https://hub.docker.com/r/hdfgroup/h5serv/. I launched the server with command:
docker run -p 5000:5000 -d -v <mydata>:/data hdfgroup/h5serv
where <mydata> is a path to a folder that contains a file my_file.h5.

I verified that my_file.h5 is available to the h5serv server by executing
docker container exec -it container_name bash
and checking that file data/my_file.h5 is present.

Then, I opened my python IDE, imported h5pyd, and tried to use h5pyd to open my_file.h5.

Executing
f = h5pyd.File('my_file.hdfgroup.org', 'r', endpoint='http://172.17.0.1:5000/')
returns OSError: [Errno 400] No route matches.

Executing
f = h5pyd.File('http://172.17.0.1:5000/', 'r', endpoint='http://172.17.0.1:5000/')
seems to return a valid file: <HDF5 file “” (mode r)>.

When I subsequently execute a command
list(f.keys())
I get a list [‘my_file’].

However, I cannot access the data inside my_file.h5 by doing something like f['my_file']. Executing
list(f['my_file'].keys())
again returns a list [‘my_file’]. (Even though content of the file my_file.h5 is something completely different.)

Do you have any suggestions on what am I doing wrong? Thanks a lot for your thoughts!


#2

It seems that my problem was caused by an outdated version of docker image on Docker Hub. What I encountered seems to be the same as an already reported issue.

A solution that worked for me was to install h5serv manually as described in the documentation and then to create my own docker image using the Dockerfile provided in the h5serv package. With this new docker image, everything seems to work properly.

What did not work at all was to run h5serv directly from local installation.