-
Notifications
You must be signed in to change notification settings - Fork 205
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
Docker Containerization & Orchestration #41
Comments
|
Note: I haven't merged the Dockerfiles of DBpedia and Freebase like I did for the label services (yet), because the content of the fuseki directory looks different. I don't remember whether I made any significant changes to them, so for now I just keep them as they are. |
Together with my Dockerfile for Yoda that Petr has already added to the main repository a while ago this should be sufficient to run everything in containers. |
I just did the orchestration via Docker Compose:
Then simply run |
Hi! Thanks for all these contributions. I'm reopening this issue until they are made more accessible by adding them to the wiki or (probably even better) just the git repo source tree. |
Yeah, I'll have to send a ton of pull requests once I'm done writing. |
Done for now. Might discuss more involved orchestration than Docker Compose at some point, but if/when that happens, it belongs into a dedicated thread. |
Hmm, sorry to keep reopening this :) but is this really done? I don't think all of the Dockerfiles here are now in git, or are they? |
What are you looking for, specifically? We have a guy working on Kubernetes, but Yoda does not have many dependencies: You need a container for Yoda itself, which is in the main directory, then a container for DBpedia and Freebase, which is this https://github.com/brmson/yodaqa/blob/master/data/dbpedia/Dockerfile and then you need one for Solr here https://github.com/brmson/yodaqa/blob/master/data/enwiki/Dockerfile and one for the label services that I provided as a pull request to your subrepo here brmson/label-lookup#1 (hasn't been accepted, yet). In case you're wondering how to create two different containers, e.g. DBpedia and Freebase, out of one image, look here: https://github.com/k0105/DockerAccessories/blob/master/docker-compose.yml To conclude my example, both dbpedia and freebase use a common fuseki image:
And only their mapped volumes, ports and commands determine which task they fulfill at runtime. So in short: Yes, I do think you have all Dockerfiles and if not you should be able to find them here: https://github.com/k0105/DockerAccessories Please let me know if you need anything else. |
Thanks - I think we have everything we need in this issue, but I just wanted to point out that not everything is transposed to the source tree, i.e. accessible to whoever comes to the project. I completely missed the label-lookup PR, thanks, merged that now. :) So AIUI, what is a TODO to fully transpose the content of this issue is:
Does that make sense? |
Sure, I'll respond either later tonight or, because I have two presentations tomorrow, on Thursday and provide everything you need to run Yoda with all dependencies inside Docker with Docker Compose. It's simple and only takes a few minutes - you're gonna like it. Unfortunately, right now I gotta run, so just very briefly some snippets: The directories with the files:
The Docker Compose YAML:
|
I have added the docker-compose file and a README about Docker to the data subdirectory, since they are easy to remove if you don't like them (I will still keep sending formal requests if I propose code changes instead of arbitrarily messing up your code). They should fulfill your requirements. Also, I pushed the images to Docker Hub, so once the data directory has been prepared, one should simply be able to adapt the path in the Docker Compose file and run everything via [I have one private image free, so I will probably add the webqa and ensemble soon.] |
Awesome, thank you! I added some pointers to the main README too. |
So far I have only provided one Dockerfile for Yoda itself, which is nice and all, but containerization only really makes sense if we put all backends in containers, because then we can freely distribute and orchestrate them. However, for this we need to map huge DBs via volumes (which also requires adding according SELinux rules on systems that use it). I have done this for the label services. Based on this Dockerfile it should be straightforward to put any backend into a container. Here goes:
I will add more Dockerfiles as soon as I find the time and show how to orchestrate them, but for now this example should already demonstrate all tricks that were still needed to accomplish the task.
Best wishes,
Joe
The text was updated successfully, but these errors were encountered: