Closed chivay closed 3 years ago
@Netherdrake Would it be possible to create an account in the Dockerhub for Reef organization and upload the Docker Image of reef-node
over there?
As @chivay mentioned, we could then put a one-liner in the README, so that people may deploy the Node easily.
Actually, as a separate PR we could automate the process of Docker Image upload to Dockerhub (which would happen for a release).
I'm not sure it makes sense to use Docker at all, since the output is a target platform binary. The most optimal thing to do is to just run the binary. Docker just adds a layer of artificial complexity and overhead.
I'm not sure it makes sense to use Docker at all.
@Netherdrake It's your very subjective point of view. Others could think: "I am not sure it makes sense to run arbitrary binaries, which have almost 1000 (unaudited) dependencies, on my machine without any isolation from host".
This is about choice. Containerized version, among other advantages, has seamless experience which could potentially increase adoption. If we can provide a very easy way to set up the Reef Node then why not? I honestly don't see any valid reason not to. Containerization is pretty much the default way of deployment these days.
The most optimal thing to do is to just run the binary.
I actually doubt there would be any noticeable performance drop in comparison to the non-containerized version. Even if it would be not negligible, others may have different priorities (e.g. prioritize security above performance of their Nodes, or just don't want to deal with compilation on their side and use a prepared Docker Image with a one-command-to-run). Again, it's about having a choice. Are you able to provide metrics or approximations of the drop in performance that would make containerized version out of the question?
If you are not receptive for my arguments, then please look up other projects and see if they provide containerized version. Would they if it didn't make sense? https://geth.ethereum.org/docs/install-and-build/installing-geth#run-inside-docker-container
We do use Docker for everything else (backends, apps etc), but I can not recommend running reef-node inside Docker, for development or production use.
I think as far as convenience is concerned, a better solution would be to provide a build service for all major platforms.
That being said, if someone still wants to use Docker, fine, as long as they are willing to deal with any Docker related issues themselves.
Add a basic Dockerfile that should simplify node deployment. Doing this will be as simple as running:
Build is split into two stages in order to minimize final image size.