-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] GIE Golang Proxy and Docker Compose Support #852
Conversation
Builds of gie-proxy available https://jenkins.galaxyproject.org/view/Meta/job/GIE-proxy/ |
Overall this looks very promising - thanks @erasche.
I think the pressure I feel from higher ups is more to get IPython more scale-able and do a better job with tracking provenance - neither of these changes hurt that. Did you have a specific use case in mind for docker compose? To me what would be more interesting than docker compose is doing this without docker, just starting IPython or RStudio right in the same VM as Galaxy and proxy appropriately - so a subprocess driver. This is the configuration that would make most sense for projects like planemo-machine or VM for data analysis. Certainly though making things more generic such as done here will benefit that goal though. Lets have dev VMs ready to go for RStudio and IPython before taking this out of WIP. My last concern is that upgrading cloudman now will break IPython - I guess that is unavoidable though. |
@erasche I like the new proxy. Never was a friend of the JS dependency and all the trouble we had. I see that this feature is hard to implement in a compose context, but I would rather try to talk to the Docker guys and come up with a solution on their end than to force the user to manually manage IE sessions. So +1 for the new proxy. Maybe you could split this PR into 2-3 ones? |
@jmchilton "overall", feel free to tear it to pieces :)
yeah, the plan here was:
the /api route of the proxy should never ever ever ever be exposed to the whole world, the api_key really only protects against the case where other users on the command line of that server can poke at that port.
It sure would be nice if some of these higher ups can tell us what they want to see in no uncertain terms :) But yes, agreed. This is one of the last big ticket items I wanted to solve before building out provenance type stuff. I have some plans for whenever moby/moby#13602 gets merged.
I sure did! So Apache zeppelin is pretty damn cool, and one of the neat things you can do with it is attach an Apache Spark container to that to provide Spark access & computations. You can probably see where I'm going with this. I wanted to stop building monolithic single containers when people have already done a huge amount of groundwork for building nicely, cleanly separated containers. We're getting closer and closer to the point where we can have a single uniform "galaxy-nginx-proxy" container which you just stick at the top of a docker-compose.yml file, and you can attach it to whatever container mess you want in the backend.
I can somewhat see the desire for that, but it seems like a LOT of work to do to re-accomplish what we're already doing with docker. Docker works in VMs. What do we really gain by running IPython/RStudio on bare metal? |
Ahhh indeed. You raised exactly the point that I needed to be reminded of. I've started killing based on traffic, rather than based on a TCP connection being open. I'll patch this soon! :)
It did ... however we're getting closer and closer to being able to use containers without modifying them at all, which can really open up what we can do.
Users don't have to manage IE sessions manually. That was theoretical discussion on a separate issue #372 (comment) If you had other concerns about this "manual management", please share!
If we run notebooks from a workflow, that's a very different concept than what we've been doing so far. There would be no traffic whatsoever, so we'll have to do everything there a bit differently.
Could! If @jmchilton has similar objections I'm happy to. |
Couple of responses:
|
Okay, I'll wait on your/@bgruening's technical replies. |
bed98fe
to
ee9520b
Compare
Two new PRs coming soon. Golang proxy first, then compose support once Golang proxy gets in. I've re-written it to be an optional feature, rather than wiping out NodeJS stuff completely (though I think that should be in the roadmap eventually...) |
First, a replacement proxy is provided for the Galaxy Interactive Environment codebase.
monitor_traffic.sh
logic.Secondly, Docker Compose support is provided.
A new command,
launch_multi
is introduced which allows launching docker-compose containers.This command reads in a
docker-compose.yml.mako
template and fills out various portions from the environment. E.g.With that template, the code
cd
s into a temporary directory, writes out adocker-compose.yml
, runsdocker-compose up -d
and leaves.That code is in serious need of a refactor
Other:
xref #372
cc @bgruening @jmchilton