GitXplorerGitXplorer
c

dockerbase-minimal

public
17 stars
3 forks
1 issues

Commits

List of commits on branch master.
Unverified
0b36929b00cd46da668d1288184002886611735d

README: Add systemd ignore idea

ccgwalters committed 8 years ago
Unverified
0d2a60a2638bb88af8d7c1fc84c0862f407629c7

README.md: Start a longer term plan section

ccgwalters committed 8 years ago
Unverified
bf2c13a967edbd33cefbdf1119401c998445bb2f

README.md: Update with note we build fedora, other misc tweaks

ccgwalters committed 8 years ago
Unverified
f81ad66fd0ab11692a8c884639e139b8d2f15838

README.md: Add a link to gpg minimization

ccgwalters committed 8 years ago
Unverified
3f6c905fef080d49d8ef3433c7f3a035778ee68f

postprocess: more trimming

ccgwalters committed 8 years ago
Unverified
3711f16de32fac2d767d731ec164ab14fe715ea0

build: Ensure we flush stdout for proper ordering

ccgwalters committed 8 years ago

README

The README file for this repository.

dockerbase-minimal

An alternative base Docker image (with CentOS7 and Fedora 24 versions), targeted particularly for people who are statically compiling native code (Go, Rust) or minimal C/C++ servers (nginx, redis) that don't tend to have big dependencies and don't need translation infrastructure, etc.

There are only two packages to start: micro-yuminst and the $distro-release package for /etc/yum.repos.d/ definitions - everything else comes via dependencies.

Trying it

See our CentOS CI jobs:

Currently, uploads to the Docker Hub are manual, under the tags cgwalters/fedoramin and cgwalters/centosmin. You can also download the tarballs directly from the Jenkins Jobs via:

curl https://ci.centos.org/job/atomic-dockerimage-fedora-24/lastSuccessfulBuild/artifact/fedoramin-24.tar.gz | docker import - cgwalters/fedoramin:24
curl https://ci.centos.org/job/atomic-dockerimage-centos-7/lastSuccessfulBuild/artifact/centosmin-7.tar.gz | docker import - cgwalters/centosmin:7

Implementation and size

Right now we're at ~27MB compressed, ~77MB uncompressed.

Work items

Ignore Requires(post): systemd

yum -y install httpd should not pull in systemd by default. This would likely require work in libsolv.

Primary minimization targets

libcurl dependencies

Build libcurl without libssh, ldap, etc. (EASY)

RPM -> lua -> ncurses -> (libstdc++...)

https://bugzilla.redhat.com/show_bug.cgi?id=1360404

GNUPG minimization

https://bugzilla.redhat.com/show_bug.cgi?id=1361869

Switch everything to openssl

So we can drop nss. I noticed at least OpenSUSE at least avoids the glibc ➡️ nss dependency.

Others

glib2 -> shared-mime-info

Building locally

  • ./build-via-docker-and-yum.sh centos 7
  • ./build-via-docker-and-yum.sh fedora 24

Longer term plans/ideas:

Rebasing the current base image

I think the win overall versus the current base image would become significantly clearer if it was "rebased" and just became a layer on top of this. Implementing this would entail some slightly nontrivial transition code where micro-yuminst knows how to replace itself with yum for example.