netgusto / nodebook

Nodebook - Multi-Lang Web REPL + CLI Code runner

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Got it to run under Docker in Docker

ms-jpq opened this issue · comments

Hi there,

Really cool project!

I just spent an afternoon dockerizing it. I have a repo here:

https://github.com/ms-jpq/nodebook-docker

It runs Docker inside Docker, so everything is a bit cleaner.

So far I've tested all the repls (with hello world), and they all seem to be a-okay except ocaml. It throws a Permission denied thing.

I don't know if you want to incorporate it into your main repo or not, but just thought i'd let you know. :)

Have a good day!

Edit:

Ocaml also throws the same error if i run it outside of Docker in Docker. (Still using the same --docker option)

So I dont think thats related.

Hey thanks! How would you go about integrating it in the main repo?
I'm not sure it's necessary though, It looks fine to me as it is.

Running it on mac with Docker Desktop for Mac, I get this error when executing an image, after downloading the toolchain image:

INFO[2020-02-26T21:41:27.714903700Z] Attempting next endpoint for pull after error: failed to register layer: Error processing tar file(exit status 1): failed to mknod("/etc/ssl/certs", S_IFCHR, 0): function
not implemented
2020/02/26 21:41:27 http: panic serving 172.17.0.1:37112: ERROR: Downloaded Docker image, but could not create container nevertheless: Error: No such image: docker.io/library/node:alpine
goroutine 85 [running]:
net/http.(*conn).serve.func1(0xc00012f5e0)
        /usr/local/go/src/net/http/server.go:1767 +0x139
panic(0x8b0520, 0xc0004b21a0)
        /usr/local/go/src/runtime/panic.go:679 +0x1b2
github.com/netgusto/nodebook/src/core/shared/recipe/helper.stdExecDocker.func1()
        /Users/jerome/nodebook/src/core/shared/recipe/helper/stdexec.go:107 +0xd44
github.com/netgusto/nodebook/src/core/shared/types.CallbackExecHandler.Start(...)
        /Users/jerome/nodebook/src/core/shared/types/callbackexechandler.go:9
github.com/netgusto/nodebook/src/core/httphandler.ApiNotebookExecHandler.func1(0xa886a0, 0xc000244380, 0xc00045bb00)
        /Users/jerome/nodebook/src/core/httphandler/apinotebookexec.go:57 +0x4df
net/http.HandlerFunc.ServeHTTP(0xc00038a040, 0xa886a0, 0xc000244380, 0xc00045bb00)
        /usr/local/go/src/net/http/server.go:2007 +0x44
github.com/gorilla/mux.(*Router).ServeHTTP(0xc0001f8240, 0xa886a0, 0xc000244380, 0xc00045b900)
        /Users/jerome/go/pkg/mod/github.com/gorilla/mux@v1.7.3/mux.go:212 +0xe2
net/http.serverHandler.ServeHTTP(0xc0003840e0, 0xa886a0, 0xc000244380, 0xc00045b900)
        /usr/local/go/src/net/http/server.go:2802 +0xa4
net/http.(*conn).serve(0xc00012f5e0, 0xa898e0, 0xc000386780)
        /usr/local/go/src/net/http/server.go:1890 +0x875
created by net/http.(*Server).Serve
        /usr/local/go/src/net/http/server.go:2927 +0x38e
INFO[2020-02-26T21:41:28.406941900Z] Layer sha256:5216338b40a7b96416b8b9858974bbe4acc3096ee60acbc4dfb1ee02aecceb10 cleaned up

When I remove the volume definition for /var/lib/docker from the launch command, it works fine.

Hey sorry about the late reply.

I was thinking that I could perhaps file a PR with a Dockerfile that includes a build step like:

FROM golang AS build...

I can just modify the Makefile to include the Docker build + release to docker hub.

It will however, probably be a good idea for you to open a Dockerhub account tho, to have an official release image. It shouldn't be alot of work, but I dont want to burden you with this, without asking you first.


As for the Docker for Mac issue:

Yeah, it looks like the cache won't work in this case, we should probably just add a warning on the README or something.

For whatever reason Docker for Mac has just horrible file system characteristics, seems like a well known issue, they even added a cache just to work around it. I tried it on my Mac and even just pulling the docker images is about 2-3x as slow. (Not the mention the error)

Really not sure what we can do to fix this to be totally honest, at first I thought it was a permission issue, but even with chmod -R 777 . the error doesn't go away.

What do you think?