4 ms·
Show HN: Beluga 0.1 – Docker Deployment Tool
- ctex 11y agoHey guys, Cortex CEO here, we've built Beluga to make Docker instances easily deployable for multiple clients. Let us know if you have any questions!
- neoeldex 11y agoWhat does it do? I've seen what it doesn't do. Is it like docker-compose, but different? I've always found it hard to figure out where these type of tools are used in the stack. Is it used on the dev environments??
- ddrmanxbxfr 11y agoIt takes your docker-compose project and deploy it to a server, instead of having to build your containers, tag the images, push to repository and connect on the server to download them and restart it. If you already have a docker-compose project, you could write a belugafile and then just do beluga --deploy and it'll build and deploy it to your remote server. Assuming that you already have docker and docker compose on the remote machine.
- thedevopsguy 11y agoHi Ctex, It's neat that beluga is written predominantly in bash but it's also difficult to see what Beluga actually does. Right now it looks like it sets up an environment for a docker compose app to run. Similar to docker machine but also solvable by tools like ansible, salt or python fabric. Kubernetes and Mesos are solving different problems. They manage and orchestrate services and add ons may also help with repository management. My view may come from a lack of understanding of the tool's primary use case. Deeply interested in new developments in the docker ecosystem. Could you please update your current documentation with a few examples.
- ddrmanxbxfr 11y agoHi, thedevopsguy. The whole goal of beluga is to take your docker-compose project from your machine to a remote host and have it running. It's meant to be used with the existing docker-machine & docker-compose tools and shouldn't interfere with any internal docker apis. Beluga was originally written in bash as we didn't want to impose runtime dependencies. Bash is usually pretty much available everywhere expect bsd. It also accounts the fact that if you have to deploy to multiple machines you won't have to rebuild your project everywhere as it can push and pull the images from either dockerhub or your own self hosted docker registry (either https://github.com/docker/docker-registry https://github.com/docker/docker-registry or https://github.com/docker/distribution https://github.com/docker/distribution). Here's a link to a sample node.js project that is deployed with beluga. https://github.com/cortexmedia/Beluga-SampleProject-Nodejs https://github.com/cortexmedia/Beluga-SampleProject-Nodejs It's pretty much a standard docker-machine & docker-compose project but with an additonal file.
- jonsterling 11y agoJust FYI, "Beluga" also refers to a proof assistant based on the logical framework with contextual modal type theory: http://complogic.cs.mcgill.ca/beluga/ http://complogic.cs.mcgill.ca/beluga/
- falcolas 11y agoWhat's the advantage of this over, say, Salt's DockerIO state? ref.: https://docs.saltstack.com/en/latest/ref/states/all/salt.states.dockerio.html#module-salt.states.dockerio https://docs.saltstack.com/en/latest/ref/states/all/salt.sta...
- hardwaresofton 11y agoI read through (admittedly quickly) through the entire README and still don't understand what Beluga does... So it builds images, then pushes them to a remote repo, then pulls them from SSH? Is it pulling updates? Is it a daemon that keeps your containers up to date?
- ddrmanxbxfr 11y agoBeluga will execute the steps to take your project from your machine to a live production machine. When you want to deploy a docker app you have to do the following step manually : 1. Build the docker images on your machine. 2. Tag them to the repository you want to push to (either private or dockerhub) 3. Upload them to the image repository 4. Connect to the remote servers and pull the new images. 5. Unlink and stop the running containers 6. Start the new containers. All these steps are automated with 2 commands on beluga : beluga --build does the steps 1, 2 and 3. beluga --deploy does the steps 4,5 and 6.
- hardwaresofton 11y agoThanks for the break down!
- mrinterweb 11y agoI wrote a Docker deployment tool that has many similarities to Beluga https://github.com/mrinterweb/freighter https://github.com/mrinterweb/freighter. I'm going to sound awfully biased here, but I believe Freighter has more features than Beluga. Then again there may be some things about Beluga I don't know about. Freighter can handle multiple environment config files, environment var management, old image and container cleanup. Freighter uses Docker's REST API and therefore does not need ruby installed on the hosts, but it does need the REST API enabled to be accessible on 127.0.0.1. If you'd like to know more about Freighter reach me at @mrinterweb or ask your question here.