All Projects → Gueils → Whales

Gueils / Whales

Licence: mit
🐳 Tool to automatically dockerize your application.

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Whales

Home Cloud
The "cloud" at home
Stars: ✭ 269 (-16.46%)
Mutual labels:  docker-compose
Artifactory Docker Examples
Examples for using Artifactory Docker distribution in various environments
Stars: ✭ 292 (-9.32%)
Mutual labels:  docker-compose
Docker Sync
Run your application at full speed while syncing your code for development, finally empowering you to utilize docker for development under OSX/Windows/*Linux
Stars: ✭ 3,305 (+926.4%)
Mutual labels:  docker-compose
Docker Lamp
Docker with Apache, MySql, PhpMyAdmin and Php
Stars: ✭ 276 (-14.29%)
Mutual labels:  docker-compose
Gradle Docker Compose Plugin
Simplifies usage of Docker Compose for integration testing in Gradle environment.
Stars: ✭ 284 (-11.8%)
Mutual labels:  docker-compose
Docker Compose Healthcheck
How to wait for container X before starting Y using docker-compose healthcheck
Stars: ✭ 292 (-9.32%)
Mutual labels:  docker-compose
Bgp Dashboard
BGP Dashboard and Monitoring Web Application
Stars: ✭ 268 (-16.77%)
Mutual labels:  docker-compose
Springy Store Microservices
Springy Store is a conceptual simple μServices-based project using the latest cutting-edge technologies, to demonstrate how the Store services are created to be a cloud-native and 12-factor app agnostic. Those μServices are developed based on Spring Boot & Cloud framework that implements cloud-native intuitive, design patterns, and best practices.
Stars: ✭ 318 (-1.24%)
Mutual labels:  docker-compose
Express Graphql Mongodb Boilerplate
A boilerplate for Node.js apps / GraphQL-API / Authentication from scratch - express, graphql - (graphql compose), mongodb (mongoose).
Stars: ✭ 288 (-10.56%)
Mutual labels:  docker-compose
Linkedin
Linkedin Scraper using Selenium Web Driver, Chromium headless, Docker and Scrapy
Stars: ✭ 309 (-4.04%)
Mutual labels:  docker-compose
Dockerized Magento
A dockerized Magento Community Edition 1.9.x
Stars: ✭ 278 (-13.66%)
Mutual labels:  docker-compose
Arcemu
World Of Warcraft 3.3.5a server package
Stars: ✭ 281 (-12.73%)
Mutual labels:  docker-compose
Dockercheatsheet
🐋 Docker Cheat Sheet 🐋
Stars: ✭ 3,301 (+925.16%)
Mutual labels:  docker-compose
Streamingphish
Python-based utility that uses supervised machine learning to detect phishing domains from the Certificate Transparency log network.
Stars: ✭ 271 (-15.84%)
Mutual labels:  docker-compose
Bitrixdock
BitrixDock - это готовое Docker окружение для Bitrix CMS 🎯
Stars: ✭ 315 (-2.17%)
Mutual labels:  docker-compose
Jenkins Bootstrap Shared
Jenkins as immutable infrastructure made easy. A repository of shared scripts meant to be used as a git submodule. Packing Jenkins, plugins, and scripts into immutable packages and images.
Stars: ✭ 270 (-16.15%)
Mutual labels:  docker-compose
Prometheus
A docker-compose stack for Prometheus monitoring
Stars: ✭ 3,383 (+950.62%)
Mutual labels:  docker-compose
Docker Chat Demo
Companion repo for my "Lessons from Building a Node App in Docker" article.
Stars: ✭ 320 (-0.62%)
Mutual labels:  docker-compose
Instantbox
📦 Get a clean, ready-to-go Linux box in seconds.
Stars: ✭ 3,317 (+930.12%)
Mutual labels:  docker-compose
Jd Scripts Docker
Stars: ✭ 304 (-5.59%)
Mutual labels:  docker-compose

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].