An open API service indexing awesome lists of open source software.

https://github.com/tadeugr/dugaire

Build Docker images with custom packages for local development, testing and daily tasks.
https://github.com/tadeugr/dugaire

ansible azurecli containers docker docker-images dockerfile kubernetes pip python

Last synced: 4 months ago
JSON representation

Build Docker images with custom packages for local development, testing and daily tasks.

Awesome Lists containing this project

README

          

Quickly build custom Docker images for local development without having to write Dockerfiles.

[![PyPI](https://img.shields.io/badge/pypi-latest-blue)](https://pypi.org/project/dugaire/)
[![Python](https://img.shields.io/badge/python-3.7%20%7C%203.8%20%7C%203.9%20%7C%203.10-blue)](https://pypi.org/project/dugaire/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![test](https://github.com/tadeugr/dugaire/workflows/test/badge.svg?branch=master)](https://github.com/tadeugr/dugaire/actions?query=workflow%3Atest)
[![publish](https://github.com/tadeugr/dugaire/workflows/publish/badge.svg)](https://github.com/tadeugr/dugaire/actions?query=workflow%3Apublish)
[![codecov](https://codecov.io/gh/tadeugr/dugaire/branch/develop/graph/badge.svg?token=Q6OURIL1ZK)](https://codecov.io/gh/tadeugr/dugaire)
[![Documentation Status](https://readthedocs.org/projects/dugaire/badge/?version=latest)](https://dugaire.readthedocs.io/en/latest/?badge=latest)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftadeugr%2Fdugaire.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftadeugr%2Fdugaire?ref=badge_shield)

# Examples

```bash
# Build an image with vim and curl using apt-get
docker run -it --rm $(dugaire build --apt=vim,curl)

# Build an image with wget, and nano using apt-get and install latest azure-cli version using pip3.
docker run -it --rm $(dugaire build --apt=wget,nano --pip3=azure-cli)

# Build an image with latest kubectl version
docker run -it --rm $(dugaire build --with-kubectl=latest)

# Build an image with kubectl 1.15.0
docker run -it --rm $(dugaire build --with-kubectl=1.15.0)
```

# Install (on Linux)

## Using pip (recommended)

```bash
pip install dugaire
```

## From source

Clone this repository.

```bash
git clone https://github.com/tadeugr/dugaire.git
```

`cd` to its directory.

```bash
cd dugaire
```

Install it (requires `pip`).

```bash
make install
```

You should have the command available.

```bash
dugaire build --help
```

# Usage

```bash
Usage: dugaire [OPTIONS] COMMAND [ARGS]...

CLI tool to build and manage custom Docker images.

Options:
--version Show the version and exit.
--help Show this message and exit.

Commands:
build Build Docker images with custom packages.
list List images built with dugaire.
rmi Remove images built with dugaire.
version Show the version and exit.

```

## dugaire build

```bash
Usage: dugaire build [OPTIONS]

Build Docker images with custom packages.

Examples:

Build an image and install vim and curl using apt-get.

$ dugaire build --apt=vim,curl

Build an image and install python3 using apt-get and ansible using pip3.

$ dugaire build --apt=python3-pip --pip3=ansible

Build an image and install the latest version of kubectl.

$ dugaire build --with-kubectl=latest

Options:
--from Base image (used in Dockerfile FROM).
Example: --from=ubuntu:20.04 [default:
ubuntu:20.04; required]
--name Image name. Example: --name="myimage:0.0.1"
[default: random]
--apt Comma separeted list of packages (no blank
space) to install using apt-get install.
Requires a base image with apt-get. Example:
-apt=curl,vim
--pip3 Comma separeted list of packages (no blank
space) to install using pip3 install.
WARNING: requires -apt=python3-pip. Example:
-apt=python3-pip -pip3=ansible,jinja2
--with-kubectl
Install kubectl. Examples: --with-
kubectl=latest / --with-kubectl=1.17.0
--with-terraform
Install terrafom. Examples: --with-
terraform=latest / --with-terraform=0.15.5
--with-velero
Install velero. Examples: --with-
velero=latest / --with-velero=1.5.2
--force Ignore Docker cache and build from scratch.
--dry-run Do not build image.
-o, --output [image.id|image.id.short|image.name|dockerfile]
Command output options. [default:
image.id.short]
--help Show this message and exit.

```

# Enable autocomplete

To enable autocomplete for your current terminal session, run:

```bash
eval "$(_DUGAIRE_COMPLETE=source dugaire)"
```

Follow the instructions bellow to permanently enable autocomplete.

## bash

```bash
echo 'eval "$(_DUGAIRE_COMPLETE=source dugaire)"' >> ~/.bashrc
```

## zsh

```bash
echo 'eval "$(_DUGAIRE_COMPLETE=source dugaire)"' >> ~/.zshrc
```

# Supported features

## Base images

Tested with:

- `ubuntu:20.04`

> You may use base images that were built from the tested images.

## Package/Dependency managers

### apt-get

You can install any package using `apt`

Use a comma separated list (no blank space) of packages you want to install.

Example:

```bash
dugaire build --apt=wget,iputils-ping
```

### pip3

You can install any package using `pip3`

Use a comma separated list (no blank space) of packages you want to install.

Use `==` to install specific versions.

Example:

```bash
dugaire build --pip3=jinja2,azure-cli==2.39.0
```

## Applications

### kubectl

#### Options

`--with-kubectl=latest` to install the latest version.

`--with-kubectl=1.17.0` *(example)* to install specific versions.

See all versions available [here](https://github.com/kubernetes/kubectl/releases).

#### Covered by automated tests

> You may install any version available. The commands bellow only describes versions included in the automated tests.

```bash
dugaire build --from=ubuntu:20.04 --with-kubectl=latest
dugaire build --from=ubuntu:20.04 --with-kubectl=1.18.0
dugaire build --from=ubuntu:20.04 --with-kubectl=1.17.0
dugaire build --from=ubuntu:18.04 --with-kubectl=1.16.0
dugaire build --from=ubuntu:18.04 --with-kubectl=1.15.0
```

### terraform

#### Options

`--with-terraform=latest` to install the latest version.

`--with-terraform=0.15.05` *(example)* to install specific versions.

See all versions available [here](https://releases.hashicorp.com/terraform/).

#### Covered by automated tests

> You may install any version available. The commands bellow only describes versions included in the automated tests.

```bash
dugaire build --from=ubuntu:20.04 --with-terraform=latest
dugaire build --from=ubuntu:20.04 --with-terraform=0.15.05
```

### velero

#### Options

`--with-velero=latest` to install the latest version.

`--with-velero=1.5.2` *(example)* to install specific versions.

See all versions available [here](https://github.com/vmware-tanzu/velero/releases).

#### Covered by automated tests

>You may install any version available. The commands bellow only describes versions included in the automated tests.

```bash
dugaire build --from=ubuntu:20.04 --with-kubectl=latest --with-velero=latest
dugaire build --from=ubuntu:20.04 --with-kubectl=1.17.0 --with-velero=1.5.2
```

# License

## Product license

Apache License Version 2.0, January 2004. [Read more.](https://github.com/tadeugr/dugaire/blob/master/LICENSE)

## FOSSA scan overview

[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftadeugr%2Fdugaire.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftadeugr%2Fdugaire?ref=badge_large)

## FOSSA Live Project report

The report is available [here](https://app.fossa.com/reports/826e35e3-c1be-4f82-a260-da5b362aa83b)