Giter Club home page Giter Club logo

whales's Introduction

Whales

whales logo

Made with Love by Icalia Labs

Whales helps you dockerize your applications by outputting the necessary files to run your application with Docker. Check it out:


Installation

Whales is distributed and run as a Docker image, so the only thing you need is to have Docker installed and running on your machine. After that just fire up your terminal and run:

docker pull gueils/whales:latest

And that's it! You're ready to use Whales!

Usage

Here's where the magic begins, first of all in your terminal go to the project directory you want to dockerize:

cd code/path_to_project/

And then just execute the following command:

docker run \
  --interactive --tty --rm \
  --env API_BASE_URI=whales.herokuapp.com \
  --env BELUGAS_CODE="${PWD}" \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --volume $(pwd):/code gueils/whales:latest

By default this command will return dev.Dockerfile & docker-compose.yml files, these are the files you need to run your application in a dev environment with Docker. These files are not perfect, but we're hoping them to be a great starting point for you.

If you need the files for a production environment, run the following command:

docker run \
  --interactive --tty --rm \
  --env API_BASE_URI=whales.herokuapp.com \
  --env BELUGAS_CODE="${PWD}" \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --volume $(pwd):/code gueils/whales:latest whales tame -e="production"

Until now, this command only returns the Dockerfile for production.

How does it work?

Whales works as a command line interface based on features analyzers, these analyzers can detect multiple features on your project through a code static analysis, in other words, thanks to these analyzers we can detect what language, framework, database and other dependencies your project uses.

Currently, we have four feature analyzers:

The above implies we only support 4 languages: Ruby, PHP, Node(JS) & Python

Architecture

The architecture is simple, it is composed of a flow chain of micro-apps that work together to dockerize your project, we call these "Whales and Belugas Team", this is the outline they follow:

  1. The command you send on the terminal conveys a signal to Whales, so he can start the process of dockerizing your application.
  2. Whales ask his bud Belugas the features of your project. Belugas is the head member of the Belugas Team: The Feature Detector Team ๐Ÿณ
  3. Belugas starts by calling his smarty-pants bud, linguistic to find out the primary language your project is using.
  4. Depending on this language, liguistic will ask one of his other buddies: belugas-ruby, belugas-php or belugas-python to search specific information in your repo.
  5. When they're done, these fellows will send back the information founded (features) to the main Belugas.
  6. Belugas will send the features to Whales.
  7. Whales will receive the features and used them along with his intelligence to build the need it Docker files
  8. Finally, Whales will display the files on the terminal.

Command explanation

Above command is a bit hard to digest at first glance, so here's a breakdown of what the options of the command are meant for:

  • --interactive --tty --rm: This tells Docker to run in an interactive mode and to clean up the container when it exits.
  • --env API_BASE_URI=whales.herokuapp.com & env BELUGAS_CODE="${PWD}": This sets two environment variables, the first one tell Whales where to find our secret sauce, and the other one points out the code to analyze.
  • volume /var/run/docker.sock:/var/run/docker.sock: This allows us to run Docker commands inside of a container (since all Belugas are also docker images).
  • volume $(pwd):/code gueils/whales: This finally mounts a volume with the code of your application.

What's with the cetacean name?

Well, they're really cool animals! ๐Ÿณ ๐Ÿ‹ ๐Ÿฌ

Contributing

Everyone is freely to collaborate, just make sure you follow our code of conduct. Thank you contributors!

Create an Issue

Find a bug and don't know how to fix it? Have trouble following the documentation or have a question about the project? Then. by all means please create an issue.

Just please make sure you check existing issues to see if what you're running into has been addressed already.

Submit a Pull Request

That's great! Just follow this steps:

  1. Create a separate branch for your edits
  2. Make sure your changes don't break the project by running your changes against current specs. We love tests! so it'll be even better if you create new ones when needed
  3. Open your pull request against master

Once you've created a pull request, maintainers will chime in to review your proposed changes and to merged it if everything is right ๐ŸŽ‰

I want to contribute but don't know where to start

That's great also! We already have some open issues for you to dive in.

Copyright

See LICENSE

Icalia Labs

Whales is maintained with love by Icalia Labs

whales's People

Contributors

mayra-cabrera avatar kurenn avatar thelastinuit avatar miguejs avatar bryankaraffa avatar archae0pteryx avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.