All Projects → cloud66-oss → Habitus

cloud66-oss / Habitus

Licence: apache-2.0
A build flow tool for Docker.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Habitus

Helloworld Msa
Main repository with documentation and support files
Stars: ✭ 218 (-81.48%)
Mutual labels:  ci-cd, containers
Drone Gke
Drone plugin for deploying containers to Google Kubernetes Engine (GKE)
Stars: ✭ 159 (-86.49%)
Mutual labels:  ci-cd, containers
Devops Guide
DevOps Guide - Development to Production all configurations with basic notes to debug efficiently.
Stars: ✭ 4,119 (+249.96%)
Mutual labels:  ci-cd, containers
Mcw Cloud Native Applications
MCW Cloud-native applications
Stars: ✭ 184 (-84.37%)
Mutual labels:  ci-cd, containers
Origin
Conformance test suite for OpenShift
Stars: ✭ 8,046 (+583.6%)
Mutual labels:  ci-cd, containers
Cheatsheet Kubernetes A4
📖 Kubernetes CheatSheets In A4
Stars: ✭ 1,121 (-4.76%)
Mutual labels:  containers
Opencompose
OpenCompose - A higher level abstraction for Kubernetes Resource
Stars: ✭ 66 (-94.39%)
Mutual labels:  containers
Flow Core X
Powerful and user-friendly CI / CD server with high availability, parallel build, agent scaling
Stars: ✭ 1,108 (-5.86%)
Mutual labels:  ci-cd
Pulumi
Pulumi - Developer-First Infrastructure as Code. Your Cloud, Your Language, Your Way 🚀
Stars: ✭ 10,887 (+824.98%)
Mutual labels:  containers
Tanya
GC-free, high-performance D library: Containers, networking, metaprogramming, memory management, utilities
Stars: ✭ 70 (-94.05%)
Mutual labels:  containers
Kcd
Continuous Delivery for Kubernetes
Stars: ✭ 69 (-94.14%)
Mutual labels:  ci-cd
Ceph Container
Docker files and images to run Ceph in containers
Stars: ✭ 1,134 (-3.65%)
Mutual labels:  containers
Bitnami Docker Express
Bitnami Express Docker Compose development environment
Stars: ✭ 63 (-94.65%)
Mutual labels:  containers
Container Security Operator
Identify image vulnerabilities in Kubernetes pods
Stars: ✭ 68 (-94.22%)
Mutual labels:  containers
Gena
Generic pseudo-templated containers for C. Written entirely in C89 with design inspired by the C++ STL. /// DOCS ARE SLIGHTLY OUTDATED, PROJECT IS STABLE AND STILL IN ACTIVE DEVELOPMENT
Stars: ✭ 61 (-94.82%)
Mutual labels:  containers
Tent
Podman (https://podman.io/) based development-only dependency manager for Linux
Stars: ✭ 69 (-94.14%)
Mutual labels:  containers
Awesome Linux Containers
A curated list of awesome Linux Containers frameworks, libraries and software
Stars: ✭ 1,101 (-6.46%)
Mutual labels:  containers
Docker Succinctly
This is the companion repo for Docker Succinctly by Elton Stoneman. Published by Syncfusion.
Stars: ✭ 64 (-94.56%)
Mutual labels:  containers
Awesome Cloud Native
A curated list for awesome cloud native tools, software and tutorials. - https://jimmysong.io/awesome-cloud-native/
Stars: ✭ 1,157 (-1.7%)
Mutual labels:  containers
Cloud Native Labs
The Labs for Cloud Native Roadshow on OpenShift https://www.openshift.com/
Stars: ✭ 64 (-94.56%)
Mutual labels:  containers

Habitus

Habitus adds workflows to Docker build. This means you can create a chain of builds to generate your final Docker image based on a workflow. This is particularly useful if your code is in compiled languages like Java or Go or if you need to use secrets like SSH keys during the build.

Logo habitus A build flow tool for Docker

Habitus is a standalone build flow tool for Docker. It’s a command line tool that builds Docker images based on their Dockerfile and a build.yml.

Key features:


  • Use build.yml to build the image
  • Supports multi-tenancy of builds by using uid parameters
  • Allows to run arbitrary commands inside of the build container
  • Allows dovetailing (sequencing) of the images from different steps
  • After build, Habitus will run Cleanup command. This will result in 'squashing' the image, therefore removing any traces of unwanted layers
  • Allows you to define and manage secrets configuration for your build
  • Allows you specify any Artifacts - they'll be copied from the built image onto the work directory, so they'll be available for next steps.
  • Support for non TLS connections

Why Habitus? (Problem → solution)


  • If you need to pull code from a private git repository:
    Your private SSH key will be needed in the image during the build process. By using Habitus, the web server only exposes your secrets to the internal Docker network of your machine, and only for the duration of the build. No traces of your secrets are left behind in the image.

  • If you want to add compile-time libraries to your image, but don’t want them in the run-time:
    Habitus will solve it by using different build steps in building your artifact and only place that artifact in smallest possible image.

  • If you want to combine multiple Dockerfiles into complex build and deployments workflows:
    Take the example of an app written in Go: it lives in a container and serves content to visitors based on the latest trending hashtags on Twitter. To get this app into a container, you need to build it with Go compile time libraries. This makes the image large, increasing the attack surface of your service. Habitus solves this issue by compiling your Go app in one container with all compile-time dependencies, and then moves the compiled build artifacts to another smaller image with only the minimum packages required to run it.

  • If you need to run images in production:
    Habitus helps you build a small, secure, performant, stable and immutable image in production. This will allow you to run non-leaky containers and healthy applications in production.

Documentations:


Comprehensive documentation is available on the Habitus website:

https://help.cloud66.com/habitus/

Quick Start:


Just run the install script on macOS or Linux!

curl -sSL https://raw.githubusercontent.com/cloud66/habitus/master/habitus_install.sh | bash

Or download Habitus straight from this repo. Habitus can run on Linux, Windows and macOS. Copy the Habitus application into /usr/local/bin/habitus and check if it has the executable flags, if not run chmod a+x /usr/local/bin/habitus

Build files can be made up of multiple steps. Each step is independent of the other ones and downstream steps can use upstream ones as source (in FROM command). When habitus is installed, create a simple build.yml with just one build step and run Habitus.

build:
  version: 2016-03-14 # version of the build schema.
  steps:
    builder:
      name: builder
      dockerfile: Dockerfile

Run habitus

# habitus

And you’re ready to start using Habitus. Comprehensive documentation about build.yml is available on the Habitus website: https://help.cloud66.com/habitus/

Developing Habitus:


If you wish to work on the Habitus project itself. We provided a docker-compose.yml to spin up the development environment and link the source into the running container.

# docker-compose run habitus /bin/bash
# go build

After the build, you can use Habitus to build itself using the following command in the running container:

# ./habitus

You can run tests by typing

# docker-compose run habitus /bin/bash
# go test    

And you are ready to start your contribution to Habitus.

CHANGELOG

Check the changelog here

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].