Giter Site home page Giter Site logo

zzsoszz / alpine-make-rootfs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alpinelinux/alpine-make-rootfs

1.0 1.0 0.0 70 KB

Make customized Alpine Linux rootfs (base image) for containers

License: MIT License

Shell 92.06% Ruby 0.22% Makefile 7.73%

alpine-make-rootfs's Introduction

Make Alpine Linux RootFS

Build Status

This project provides a script for building customized Alpine Linux rootfs (a base image if you like) for containers. It’s quite simple (250 LoC of shell), fast and requires minimum dependencies (just common Linux tools).

Tip
Do you want to just quickly chroot into Alpine Linux, e.g. on CI? Check out alpine-chroot-install!

Requirements

  • Linux system

  • POSIX-sh compatible shell (e.g. Busybox ash, dash, ZSH, bash, …)

  • common userland with chroot, getopt, grep, sed, sha256sum, wget (e.g. from Busybox, GNU coreutils, …)

  • tar (full-blown)

Usage

Read documentation in alpine-make-rootfs. See .github/workflows/ci.yml for GitHub Actions example.

You can copy alpine-make-rootfs into your repository or download it on demand, e.g.:

wget https://raw.githubusercontent.com/alpinelinux/alpine-make-rootfs/v0.6.1/alpine-make-rootfs \
    && echo '73948b9ee3580d6d9dc277ec2d9449d941e32818  alpine-make-rootfs' | sha1sum -c \
    || exit 1

Examples

Installation Script in Heredoc

sudo ./alpine-make-rootfs \  # (1)
    --branch v3.8 \  # (2)
    --packages 'ruby ruby-bigdecimal sqlite' \  # (3)
    --timezone 'Europe/Prague' \  # (4)
    --script-chroot \  # (5)
    example-$(date +%Y%m%d).tar.gz - <<'SHELL'  # (6)
        # Copy some file from the repository root to the rootfs.
        install -D -m 755 examples/hello_world.rb /app/hello_world.rb

        # Install some dev packages and gem mailcatcher.
        apk add --no-progress -t .make build-base ruby-dev sqlite-dev
        gem install --no-document mailcatcher

        # Clean-up dev packages.  (7)
        apk del --no-progress .make
SHELL
  1. The script needs to create files owned by root or other users and optionally uses chroot (when --script-chroot is specified), so it must be run under root (e.g. using sudo).

  2. Alpine branch (release) to install (see Alpine Releases).

  3. You can name packages to install into the chroot, in addition to base packages (see ALPINE_BASE_PKGS in alpine-make-rootfs).

  4. You may specify timezone to set (default is UTC).

  5. This flag tells that the installation script will be executed inside chroot with the rootfs as new root. Your current working directory is binded at /mnt inside the chroot and $PWD for the script is set to /mnt, so you can easily access files out of the chroot and copy them into the rootfs.

  6. Installation script may be provided also via STDIN, using a convenient heredoc syntax. The script passed is executed using /bin/sh -e.

  7. Note that it’s not needed to clean apk cache, this is done automatically.

Create Docker Base Image

Create your own (customized) up-to-date base image.

sudo ./alpine-make-rootfs --branch v3.8 - | docker import -c 'CMD /bin/sh' - my/alpine:3.8

Create OCI Image

You can use simply shell script sloci-image to pack the generated rootfs as a single-layer OCI image.

sudo ./alpine-make-rootfs --branch v3.8 --script-chroot rootfs.tar.gz ./install.sh
./sloci-image --entrypoint /start.sh --port 80/tcp --tar rootfs.tar.gz alpine:3.8

License

This project is licensed under MIT License. For the full text of the license, see the LICENSE file.

alpine-make-rootfs's People

Contributors

bitfehler avatar jamesbrink avatar jirutka avatar

Stargazers

 avatar

Watchers

 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.