docker-galaxy-stable: Custom Interactive Environment Static Files not being moved to /galaxy-central/static/plugins/i_e

I have been trying to use the docker container to develop custom interactive environments. I have a plugin written but have found that while the container does get started, the static files get 404s when the browser tries to fetch them because they are not being copied or linked in the /galaxy-central/static/plugins/interactive_environments folder which seems to be the only place nginx pulls static file from. Is there a configuration parameter or way to start the container such that it automatically configures the custom IEs to work out of the box?

As it stands now I can get it to work with an admittedly pretty ugly hack: running the included plugin_staging.py script after /usr/bin/startup runs, this does work and I have confirmed that the plugin works properly after doing this.

For reference, I called the plugin shiny, but all it is is a renamed copy of the jupyter interactive environment to ensure I was dealing with something that already worked.

Here is the nginx error:

==> /var/log/nginx/error.log <==
2018/12/14 16:51:44 [error] 129#0: *5 open() "/galaxy-central/static/plugins/interactive_environments/shiny/static/js/shiny.js" failed (2: No such file or directory), client: 10.8.16.126, server: , request: "GET /static/plugins/interactive_environments/shiny/static/js/shiny.js?v=1544806220 HTTP/1.1", host: "10.15.33.17:2780", referrer: "http://10.15.33.17:2780/plugins/interactive_environments/shiny/show?image_tag=quay.io%2Fbgruening%2Fdocker-jupyter-notebook%3A17.09&dataset_id=f2db41e1fa331b3e&additional_dataset_ids="

Here is the command to start the container (I have also done it with Docker in Docker, to the same results):

docker run -it -p 2780:80 -p 2721:21 -p 8800:8800 -p 2702:9002 \
    --privileged=true -e "GALAXY_LOGGING=full" -e "DOCKER_PARENT=True" \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /ldata1/home/jeffersj/galaxy-storage/:/export/ \
    bgruening/galaxy-stable

If you need any other details I would be happy to provide them.

Thank you.

About this issue

  • Original URL
  • State: open
  • Created 6 years ago
  • Comments: 19 (8 by maintainers)

Most upvoted comments

As you’ve noticed, this isn’t bundled into ‘make client*’ endpoints, but rather the startup staging script you found (https://github.com/galaxyproject/galaxy/blob/dev/scripts/plugin_staging.py), which is executed as a part of common_startup.sh. In the docker deployment of Galaxy, since I think common_startup is skipped, this just doesn’t run automatically.

This makes me wonder if anything else in common_startup.sh is maybe missing from the container, since we do expect that to be run?

In any event, @monprin, that’s the correct script that will stage your plugins. You should only have to run it on plugin install/update, or if you create a new container.