Public Repository

Last pushed: 20 days ago
Short Description
buildpack-deps on Alpine Linux (https://git.io/vK3t4)
Full Description

alpine-buildpack-deps

An attempt at a "buildpack-deps"-like Docker image with Alpine Linux

Images

The base image is the official Docker Alpine image.

This repo contains a set of images similar to the official buildpack-deps images.

Tag Base image Description
curl alpine:3.x Alpine with curl and wget
scm :curl :curl with source control management (SCM) tools
slim :scm :scm with build tools and development libraries
latest :slim :slim with database development libraries (see notes below)

Caveats

  • A best effort was made to find equivalent Alpine packages for the Debian packages in the official buildpack-deps. The packages may not always be 100% equivalent.
  • The code you're compiling in buildpack-deps could make assumptions about the host that are not necessarily true for Alpine Linux. For example:
    • That the standard Unix tools are the GNU implementations
    • That the standard C library is glibc
    • That the paths to development files are the Debian paths
  • The default/latest tag for this image is not smaller than the Debian/Ubuntu-based buildpack-deps images, although it is roughly the same size (~190MB compressed, ~660MB uncompressed). The reason for this is that the Alpine development libraries for PostgreSQL and MySQL are significantly bigger than the Debian ones. If you are hoping to make a small "buildpack-deps"-based Docker image, you're probably doing Docker images wrong.

Packages

The packages in the curl and scm variants mostly have the same names in Alpine Linux as they do in the Debian/Ubuntu source. The translation of packages for the latest image is a bit more complicated, though. The packages used are listed below.

curl

Upstream

buildpack-deps alpine-buildpack-deps
ca-certificates ca-certificates*
curl curl
dirmngr gnupg
gnupg gnupg
wget busybox/(libressl/openssl)*

Additionally, we install the tar package in the curl image. This installs the GNU version of tar, which has more features than the BusyBox tar provided with Alpine Linux. In particular, the --strip-components option only available in GNU tar is commonly used in the Docker official images when extracting source code from tarballs.

*Alpine Linux uses BusyBox which includes an implementation of wget. In order for this wget to verify certificates, the libressl (Alpine 3.5+) or openssl package is required, both of which include a certificate bundle. The ca-certificates package also includes a certificate bundle and is required for Curl to be able to verify certificates.

scm

Upstream

buildpack-deps alpine-buildpack-deps
bzr bzr
git git
mercurial mercurial
openssh-client openssh-client
procps procps
subversion subversion

latest

Upstream

buildpack-deps alpine-buildpack-deps
autoconf autoconf
automake automake
bzip2 bzip2
dpkg-dev dpkg, dpkg-dev
file file
g++ g++
gcc gcc
imagemagick imagemagick-dev
libbz2-dev bzip2-dev
libc6-dev libc-dev, linux-headers
libcurl4-openssl-dev curl-dev
libdb-dev db-dev
libevent-dev libevent-dev
libffi-dev libffi-dev
libgdbm-dev gdbm-dev
libgeoip-dev geoip-dev
libglib2.0-dev glib-dev
libjpeg-dev jpeg-dev
libkrb5-dev krb5-dev
liblzma-dev xz-dev
libmagickcore-dev imagemagick-dev
libmagickwand-dev imagemagick-dev
libmysqlclient-dev mariadb-dev*
libncurses5-dev ncurses-dev
libncursesw5-dev ncurses-dev
libpng-dev libpng-dev
libpq-dev postgresql-dev*
libreadline-dev readline-dev
libsqlite3-dev sqlite-dev
libssl-dev openssl-dev/libressl-dev**
libtool libtool
libwebp-dev libwebp-dev
libxml2-dev libxml2-dev
libxslt-dev libxslt-dev
libyaml-dev yaml-dev
make make
patch patch
xz-utils xz
zlib1g-dev zlib-dev

*Alpine Linux doesn't have development packages for MySQL or PostgreSQL that include only the headers/libraries necessary for client-side libraries. These Alpine packages are quite large because they include server headers/libraries as well.

**Alpine Linux switched from OpenSSL to LibreSSL in version 3.5.

Docker Pull Command
Owner
praekeltfoundation