Skip to content

Add Alpine 3.10 and remove Alpine 3.8 #281

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,22 @@ services: docker
env:
- VERSION=2.7-rc VARIANT=stretch
- VERSION=2.7-rc VARIANT=stretch/slim
- VERSION=2.7-rc VARIANT=alpine3.10
- VERSION=2.7-rc VARIANT=alpine3.9
- VERSION=2.6 VARIANT=stretch
- VERSION=2.6 VARIANT=stretch/slim
- VERSION=2.6 VARIANT=alpine3.10
- VERSION=2.6 VARIANT=alpine3.9
- VERSION=2.6 VARIANT=alpine3.8
- VERSION=2.5 VARIANT=stretch
- VERSION=2.5 VARIANT=stretch/slim
- VERSION=2.5 VARIANT=alpine3.10
- VERSION=2.5 VARIANT=alpine3.9
- VERSION=2.5 VARIANT=alpine3.8
- VERSION=2.4 VARIANT=stretch
- VERSION=2.4 VARIANT=stretch/slim
- VERSION=2.4 VARIANT=jessie
- VERSION=2.4 VARIANT=jessie/slim
- VERSION=2.4 VARIANT=alpine3.10
- VERSION=2.4 VARIANT=alpine3.9
- VERSION=2.4 VARIANT=alpine3.8

install:
- git clone --depth 1 https://github.com/docker-library/official-images.git ~/official-images
Expand Down
6 changes: 3 additions & 3 deletions 2.4/alpine3.8/Dockerfile → 2.4/alpine3.10/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM alpine:3.8
FROM alpine:3.10

RUN apk add --no-cache \
gmp-dev
Expand Down Expand Up @@ -38,8 +38,8 @@ RUN set -ex \
linux-headers \
make \
ncurses-dev \
libressl \
libressl-dev \
openssl \
openssl-dev \
procps \
readline-dev \
ruby \
Expand Down
6 changes: 3 additions & 3 deletions 2.5/alpine3.8/Dockerfile → 2.5/alpine3.10/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM alpine:3.8
FROM alpine:3.10

RUN apk add --no-cache \
gmp-dev
Expand Down Expand Up @@ -38,8 +38,8 @@ RUN set -ex \
linux-headers \
make \
ncurses-dev \
libressl \
libressl-dev \
openssl \
openssl-dev \
procps \
readline-dev \
ruby \
Expand Down
6 changes: 3 additions & 3 deletions 2.6/alpine3.8/Dockerfile → 2.6/alpine3.10/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM alpine:3.8
FROM alpine:3.10

RUN apk add --no-cache \
gmp-dev
Expand Down Expand Up @@ -37,8 +37,8 @@ RUN set -ex \
linux-headers \
make \
ncurses-dev \
libressl \
libressl-dev \
openssl \
openssl-dev \
procps \
readline-dev \
ruby \
Expand Down
118 changes: 118 additions & 0 deletions 2.7-rc/alpine3.10/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
FROM alpine:3.10

RUN apk add --no-cache \
gmp-dev

# skip installing gem documentation
RUN mkdir -p /usr/local/etc \
&& { \
echo 'install: --no-document'; \
echo 'update: --no-document'; \
} >> /usr/local/etc/gemrc

ENV RUBY_MAJOR 2.7-rc
ENV RUBY_VERSION 2.7.0-preview1
ENV RUBY_DOWNLOAD_SHA256 8c546df3345398b3edc9d0ab097846f033783d33762889fd0f3dc8bb465c3354

# some of ruby's build scripts are written in ruby
# we purge system ruby later to make sure our final image uses what we just built
# readline-dev vs libedit-dev: https://bugs.ruby-lang.org/issues/11869 and https://github.com/docker-library/ruby/issues/75
RUN set -ex \
\
&& apk add --no-cache --virtual .ruby-builddeps \
autoconf \
bison \
bzip2 \
bzip2-dev \
ca-certificates \
coreutils \
dpkg-dev dpkg \
gcc \
gdbm-dev \
glib-dev \
libc-dev \
libffi-dev \
libxml2-dev \
libxslt-dev \
linux-headers \
make \
ncurses-dev \
openssl \
openssl-dev \
procps \
readline-dev \
ruby \
tar \
xz \
yaml-dev \
zlib-dev \
\
&& wget -O ruby.tar.xz "https://cache.ruby-lang.org/pub/ruby/${RUBY_MAJOR%-rc}/ruby-$RUBY_VERSION.tar.xz" \
&& echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.xz" | sha256sum -c - \
\
&& mkdir -p /usr/src/ruby \
&& tar -xJf ruby.tar.xz -C /usr/src/ruby --strip-components=1 \
&& rm ruby.tar.xz \
\
&& cd /usr/src/ruby \
\
# https://github.com/docker-library/ruby/issues/196
# https://bugs.ruby-lang.org/issues/14387#note-13 (patch source)
# https://bugs.ruby-lang.org/issues/14387#note-16 ("Therefore ncopa's patch looks good for me in general." -- only breaks glibc which doesn't matter here)
&& wget -O 'thread-stack-fix.patch' 'https://bugs.ruby-lang.org/attachments/download/7081/0001-thread_pthread.c-make-get_main_stack-portable-on-lin.patch' \
&& echo '3ab628a51d92fdf0d2b5835e93564857aea73e0c1de00313864a94a6255cb645 *thread-stack-fix.patch' | sha256sum -c - \
&& patch -p1 -i thread-stack-fix.patch \
&& rm thread-stack-fix.patch \
\
# hack in "ENABLE_PATH_CHECK" disabling to suppress:
# warning: Insecure world writable dir
&& { \
echo '#define ENABLE_PATH_CHECK 0'; \
echo; \
cat file.c; \
} > file.c.new \
&& mv file.c.new file.c \
\
&& autoconf \
&& gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \
# the configure script does not detect isnan/isinf as macros
&& export ac_cv_func_isnan=yes ac_cv_func_isinf=yes \
&& ./configure \
--build="$gnuArch" \
--disable-install-doc \
--enable-shared \
&& make -j "$(nproc)" \
&& make install \
\
&& runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)" \
&& apk add --no-network --virtual .ruby-rundeps $runDeps \
bzip2 \
ca-certificates \
libffi-dev \
procps \
yaml-dev \
zlib-dev \
&& apk del --no-network .ruby-builddeps \
&& cd / \
&& rm -r /usr/src/ruby \
# rough smoke test
&& ruby --version && gem --version && bundle --version

# install things globally, for great justice
# and don't create ".bundle" in all our apps
ENV GEM_HOME /usr/local/bundle
ENV BUNDLE_PATH="$GEM_HOME" \
BUNDLE_SILENCE_ROOT_WARNING=1 \
BUNDLE_APP_CONFIG="$GEM_HOME"
# path recommendation: https://github.com/bundler/bundler/pull/6469#issuecomment-383235438
ENV PATH $GEM_HOME/bin:$BUNDLE_PATH/gems/bin:$PATH
# adjust permissions of a few directories for running "gem install" as an arbitrary user
RUN mkdir -p "$GEM_HOME" && chmod 777 "$GEM_HOME"
# (BUNDLE_PATH = GEM_HOME, no need to mkdir/chown both)

CMD [ "irb" ]
9 changes: 1 addition & 8 deletions update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ for version in "${versions[@]}"; do
echo "$version: $fullVersion; $shaVal"

for v in \
alpine{3.7,3.8,3.9} \
alpine{3.9,3.10} \
{jessie,stretch}{/slim,} \
; do
dir="$version/$v"
Expand All @@ -98,13 +98,6 @@ for version in "${versions[@]}"; do
-e 's/^(FROM (debian|buildpack-deps|alpine)):.*/\1:'"$tag"'/' \
"$template" > "$dir/Dockerfile"

case "$variant" in
alpine3.8 | alpine3.7)
# Alpine 3.9+ uses OpenSSL, but 3.8/3.7 still uses LibreSSL
sed -ri -e 's/openssl/libressl/g' "$dir/Dockerfile"
;;
esac

if [ -n "${newEnoughRubygems[$rcVersion]:-}" ]; then
sed -ri -e '/RUBYGEMS_VERSION/d' "$dir/Dockerfile"
fi
Expand Down