TL;DR
- aplineをベースにしてrubyをdocker buildをしてみた
- rubyはpackageからではなく独自compileしてbuild
Dockerfile
FROM alpine
ENV HOME /root
WORKDIR /tmp
# SETUP: package install
RUN apk add --no-cache --virtual .ruby-builddeps \
autoconf \
bison \
bzip2 \
bzip2-dev \
ca-certificates \
coreutils \
curl \
gcc \
g++ \
make \
gdbm-dev \
glib-dev \
libc-dev \
libedit-dev \
libffi-dev \
libxml2-dev \
libxslt-dev \
linux-headers \
cyrus-sasl-dev \
ncurses-dev \
openssl-dev \
procps \
tcl-dev \
yaml-dev \
zlib-dev \
tar \
perl \
python \
py-pip \
libmemcached-libs \
mariadb mariadb-client mariadb-libs mariadb-dev
# SETUP: ruby & bundler
ENV RUBY_MAJOUR_VER 2.3
ENV RUBY_VERSION 2.3.0
RUN wget -q "http://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOUR_VER}/ruby-${RUBY_VERSION}.tar.gz" -O ruby-${RUBY_VERSION}.tar.gz && \
tar zxf ruby-${RUBY_VERSION}.tar.gz && \
cd ruby-${RUBY_VERSION} && \
./configure --disable-install-doc --disable-install-rdoc && make && make install && \
cd .. && \
rm -rf /tmp/* && \
echo "install: --no-document" > $HOME/.gemrc && \
echo "update: --no-document" >> $HOME/.gemrc && \
gem install bundler
- VIRTUAL SIZE : 773.3 MB
package
-
https://pkgs.alpinelinux.org/packages で検索できる
- 部分一致で検索するには % のwildcard文字が必要
- CentOS,Ubuntuとは微妙にpackage名が異なるので注意
- xxx-dev などになっている
- それなりに新しめversionのpackageになっている
独自compileしない場合
FROM alpine
RUN apk add --no-cache ruby ruby-bundler
-
rubyのみをbuild
-
rubyはversion2.2.4がbuildされます
-
VIRTUAL SIZE : 20.58 MB
感想
- 軽量なalpinelinuxをベースにしても、諸々組み込んでいくと、それなりのサイズのimageになってしまう
- もちろん不要なpackageを取り除いていけば小さくなる