Skip to content

Docker containers with preinstalled Tebako packaging environment

Notifications You must be signed in to change notification settings

tamatebako/tebako-ci-containers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tebako Docker containers

Pre-built containers

This repository contains definitions of Docker containers with a preinstalled Tebako packaging environment, and provides those built Docker containers.

Tebako containers offer a streamlined and isolated environment for packaging applications, ensuring consistency and reproducibility across different development setups. By using containers, developers can bypass the complexities of managing multiple dependencies on their local machines.

What is Tebako?

Tebako is an executable packager that simplifies the process of packaging applications that utilize an interpretive runtime, allowing for easy distribution.

It packages a set of files into a DwarFS file system for read-only purposes.

Please refer to the Tebako website for more details.

Available container tags

Tebako containers are available with different base images to suit various needs.

The currently available tags are:

ubuntu-20.04

This container is based on Ubuntu 20.04 LTS (glibc), providing a stable and widely used environment for packaging.

alpine-3.17

This container is based on Alpine Linux 3.17 (musl), offering a smaller image size. Suitable for those who prefer a minimalistic approach.

Both containers are tailored for Tebako packaging, featuring preinstalled Ruby environments versions 3.2.5 and 3.3.4.

Using the Tebako containers

General

There are two primary methods for packaging with Tebako: from inside the container and from outside using Docker commands.

Prerequisites

  • Docker installed on your machine.

  • A Ruby application ready for packaging.

Package using an ephemeral container

You can also package your application from outside the container by running a single Docker command.

This command mounts your workspace into the container and runs the tebako press command, specifying:

  • application root

  • entry point

  • output location

  • Ruby version

$ docker run -v <application_folder>:/mnt/w \
  -t ghcr.io/tamatebako/tebako-${{ container_tag }}:latest \
  tebako press <tebako press parameters>
Example 1. Packaging fontist with an ephemeral container

A Ruby application called fontist inside fontist/ under the current directory, can be packaged into ./fontist-package using the following command.

docker run -v $PWD:/mnt/w \
  -t ghcr.io/tamatebako/tebako-ubuntu-20.04:latest \
  tebako press --root=/mnt/w/fontist --entry-point=fontist --output=/mnt/w/fontist-package --Ruby=3.2.5

Package using a persistent container

To package your application from inside the Tebako container, follow these steps:

  1. Pull the Tebako container image:

    $ docker pull ghcr.io/tamatebako/tebako-<container_tag>:latest

    Replace <container_tag> with the desired container tag (e.g., ubuntu-20.04 or alpine-3.17).

  2. Start and enter the container interactively:

    $ docker run -it --rm -v <application_folder>:/mnt/w ghcr.io/tamatebako/tebako-<container_tag>:latest bash

    Replace <container_tag> with the appropriate tag and <application_folder> with the path to your application folder.

  3. Once inside, run the tebako press command:

    $ tebako press <tebako press parameters>
Example 2. Packaging fontist with a persistent container

A Ruby application called fontist inside fontist/ under the current directory, can be packaged into ./fontist-package using the following command.

# Starting a persistent container
$ docker run -it --rm -v $PWD:/mnt/w ghcr.io/tamatebako/tebako-<container_tag>:latest bash

# Run this after entering the container
$ tebako press --root=/mnt/w/fontist --entry-point=fontist --output=/mnt/w/fontist-package --Ruby=3.2.5

License

Copyright Ribose. All rights reserved.

This work is licensed under the 2-Clause BSD License.