Merge pull request #26 from infosiftr/alpine

Add alpine variants
This commit is contained in:
yosifkit 2016-07-07 15:15:23 -07:00 committed by GitHub
commit 0fc8c10e3f
10 changed files with 224 additions and 21 deletions

View File

@ -3,15 +3,17 @@ services: docker
env:
- VERSION=2.4
- VERSION=2.4 VARIANT=alpine
- VERSION=2.2
- VERSION=2.2 VARIANT=alpine
install:
- git clone https://github.com/docker-library/official-images.git ~/official-images
before_script:
- env | sort
- cd "$VERSION"
- image="httpd:$VERSION"
- cd "$VERSION/$VARIANT"
- image="httpd:${VERSION}${VARIANT:+-$VARIANT}"
script:
- docker build -t "$image" .

View File

@ -4,7 +4,7 @@ FROM debian:jessie
#RUN groupadd -r www-data && useradd -r --create-home -g www-data www-data
ENV HTTPD_PREFIX /usr/local/apache2
ENV PATH $PATH:$HTTPD_PREFIX/bin
ENV PATH $HTTPD_PREFIX/bin:$PATH
RUN mkdir -p "$HTTPD_PREFIX" \
&& chown www-data:www-data "$HTTPD_PREFIX"
WORKDIR $HTTPD_PREFIX
@ -23,25 +23,27 @@ RUN apt-get update \
&& rm -r /var/lib/apt/lists/*
ENV HTTPD_VERSION 2.2.31
ENV HTTPD_SHA1 e3b55387112206307ba76526820a2627472f3787
ENV HTTPD_BZ2_URL https://www.apache.org/dist/httpd/httpd-$HTTPD_VERSION.tar.bz2
RUN buildDeps=' \
ca-certificates \
curl \
RUN set -x \
&& buildDeps=' \
bzip2 \
ca-certificates \
gcc \
libpcre++-dev \
libssl-dev \
make \
wget \
' \
set -x \
&& apt-get update \
&& apt-get install -y --no-install-recommends $buildDeps \
&& rm -r /var/lib/apt/lists/* \
\
&& curl -fSL "$HTTPD_BZ2_URL" -o httpd.tar.bz2 \
&& curl -fSL "$HTTPD_BZ2_URL.asc" -o httpd.tar.bz2.asc \
&& wget -O httpd.tar.bz2 "$HTTPD_BZ2_URL" \
&& echo "$HTTPD_SHA1 *httpd.tar.bz2" | sha1sum -c - \
# see https://httpd.apache.org/download.cgi#verify
&& wget -O httpd.tar.bz2.asc "$HTTPD_BZ2_URL.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B1B96F45DFBDCCF974019235193F180AB55D9977 \
&& gpg --batch --verify httpd.tar.bz2.asc httpd.tar.bz2 \

81
2.2/alpine/Dockerfile Normal file
View File

@ -0,0 +1,81 @@
FROM alpine:3.4
# ensure www-data user exists
RUN set -x \
&& addgroup -g 82 -S www-data \
&& adduser -u 82 -D -S -G www-data www-data
# 82 is the standard uid/gid for "www-data" in Alpine
# http://git.alpinelinux.org/cgit/aports/tree/main/apache2/apache2.pre-install?h=v3.3.2
# http://git.alpinelinux.org/cgit/aports/tree/main/lighttpd/lighttpd.pre-install?h=v3.3.2
# http://git.alpinelinux.org/cgit/aports/tree/main/nginx-initscripts/nginx-initscripts.pre-install?h=v3.3.2
ENV HTTPD_PREFIX /usr/local/apache2
ENV PATH $HTTPD_PREFIX/bin:$PATH
RUN mkdir -p "$HTTPD_PREFIX" \
&& chown www-data:www-data "$HTTPD_PREFIX"
WORKDIR $HTTPD_PREFIX
ENV HTTPD_VERSION 2.2.31
ENV HTTPD_SHA1 e3b55387112206307ba76526820a2627472f3787
ENV HTTPD_BZ2_URL https://www.apache.org/dist/httpd/httpd-$HTTPD_VERSION.tar.bz2
# see https://httpd.apache.org/docs/2.4/install.html#requirements
RUN set -x \
&& runDeps=' \
apr-dev \
apr-util-dev \
' \
&& apk add --no-cache --virtual .build-deps \
$runDeps \
ca-certificates \
gcc \
gnupg \
libc-dev \
make \
openssl \
openssl-dev \
pcre-dev \
tar \
\
&& wget -O httpd.tar.bz2 "$HTTPD_BZ2_URL" \
&& echo "$HTTPD_SHA1 *httpd.tar.bz2" | sha1sum -c - \
# see https://httpd.apache.org/download.cgi#verify
&& wget -O httpd.tar.bz2.asc "$HTTPD_BZ2_URL.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B1B96F45DFBDCCF974019235193F180AB55D9977 \
&& gpg --batch --verify httpd.tar.bz2.asc httpd.tar.bz2 \
&& rm -r "$GNUPGHOME" httpd.tar.bz2.asc \
\
&& mkdir -p src \
&& tar -xvf httpd.tar.bz2 -C src --strip-components=1 \
&& rm httpd.tar.bz2 \
&& cd src \
\
&& ./configure \
--prefix="$HTTPD_PREFIX" \
--enable-mods-shared=reallyall \
&& make -j"$(getconf _NPROCESSORS_ONLN)" \
&& make install \
\
&& cd .. \
&& rm -r src \
\
&& sed -ri \
-e 's!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g' \
-e 's!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g' \
"$HTTPD_PREFIX/conf/httpd.conf" \
\
&& runDeps="$runDeps $( \
scanelf --needed --nobanner --recursive /usr/local \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| sort -u \
| xargs -r apk info --installed \
| sort -u \
)" \
&& apk add --virtual .httpd-rundeps $runDeps \
&& apk del .build-deps
COPY httpd-foreground /usr/local/bin/
EXPOSE 80
CMD ["httpd-foreground"]

7
2.2/alpine/httpd-foreground Executable file
View File

@ -0,0 +1,7 @@
#!/bin/sh
set -e
# Apache gets grumpy about PID files pre-existing
rm -f /usr/local/apache2/logs/httpd.pid
exec httpd -DFOREGROUND

View File

@ -4,7 +4,7 @@ FROM debian:jessie
#RUN groupadd -r www-data && useradd -r --create-home -g www-data www-data
ENV HTTPD_PREFIX /usr/local/apache2
ENV PATH $PATH:$HTTPD_PREFIX/bin
ENV PATH $HTTPD_PREFIX/bin:$PATH
RUN mkdir -p "$HTTPD_PREFIX" \
&& chown www-data:www-data "$HTTPD_PREFIX"
WORKDIR $HTTPD_PREFIX
@ -23,25 +23,27 @@ RUN apt-get update \
&& rm -r /var/lib/apt/lists/*
ENV HTTPD_VERSION 2.4.23
ENV HTTPD_SHA1 5101be34ac4a509b245adb70a56690a84fcc4e7f
ENV HTTPD_BZ2_URL https://www.apache.org/dist/httpd/httpd-$HTTPD_VERSION.tar.bz2
RUN buildDeps=' \
ca-certificates \
curl \
RUN set -x \
&& buildDeps=' \
bzip2 \
ca-certificates \
gcc \
libpcre++-dev \
libssl-dev \
make \
wget \
' \
set -x \
&& apt-get update \
&& apt-get install -y --no-install-recommends $buildDeps \
&& rm -r /var/lib/apt/lists/* \
\
&& curl -fSL "$HTTPD_BZ2_URL" -o httpd.tar.bz2 \
&& curl -fSL "$HTTPD_BZ2_URL.asc" -o httpd.tar.bz2.asc \
&& wget -O httpd.tar.bz2 "$HTTPD_BZ2_URL" \
&& echo "$HTTPD_SHA1 *httpd.tar.bz2" | sha1sum -c - \
# see https://httpd.apache.org/download.cgi#verify
&& wget -O httpd.tar.bz2.asc "$HTTPD_BZ2_URL.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys A93D62ECC3C8EA12DB220EC934EA76E6791485A8 \
&& gpg --batch --verify httpd.tar.bz2.asc httpd.tar.bz2 \

81
2.4/alpine/Dockerfile Normal file
View File

@ -0,0 +1,81 @@
FROM alpine:3.4
# ensure www-data user exists
RUN set -x \
&& addgroup -g 82 -S www-data \
&& adduser -u 82 -D -S -G www-data www-data
# 82 is the standard uid/gid for "www-data" in Alpine
# http://git.alpinelinux.org/cgit/aports/tree/main/apache2/apache2.pre-install?h=v3.3.2
# http://git.alpinelinux.org/cgit/aports/tree/main/lighttpd/lighttpd.pre-install?h=v3.3.2
# http://git.alpinelinux.org/cgit/aports/tree/main/nginx-initscripts/nginx-initscripts.pre-install?h=v3.3.2
ENV HTTPD_PREFIX /usr/local/apache2
ENV PATH $HTTPD_PREFIX/bin:$PATH
RUN mkdir -p "$HTTPD_PREFIX" \
&& chown www-data:www-data "$HTTPD_PREFIX"
WORKDIR $HTTPD_PREFIX
ENV HTTPD_VERSION 2.4.23
ENV HTTPD_SHA1 5101be34ac4a509b245adb70a56690a84fcc4e7f
ENV HTTPD_BZ2_URL https://www.apache.org/dist/httpd/httpd-$HTTPD_VERSION.tar.bz2
# see https://httpd.apache.org/docs/2.4/install.html#requirements
RUN set -x \
&& runDeps=' \
apr-dev \
apr-util-dev \
' \
&& apk add --no-cache --virtual .build-deps \
$runDeps \
ca-certificates \
gcc \
gnupg \
libc-dev \
make \
openssl \
openssl-dev \
pcre-dev \
tar \
\
&& wget -O httpd.tar.bz2 "$HTTPD_BZ2_URL" \
&& echo "$HTTPD_SHA1 *httpd.tar.bz2" | sha1sum -c - \
# see https://httpd.apache.org/download.cgi#verify
&& wget -O httpd.tar.bz2.asc "$HTTPD_BZ2_URL.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys A93D62ECC3C8EA12DB220EC934EA76E6791485A8 \
&& gpg --batch --verify httpd.tar.bz2.asc httpd.tar.bz2 \
&& rm -r "$GNUPGHOME" httpd.tar.bz2.asc \
\
&& mkdir -p src \
&& tar -xvf httpd.tar.bz2 -C src --strip-components=1 \
&& rm httpd.tar.bz2 \
&& cd src \
\
&& ./configure \
--prefix="$HTTPD_PREFIX" \
--enable-mods-shared=reallyall \
&& make -j"$(getconf _NPROCESSORS_ONLN)" \
&& make install \
\
&& cd .. \
&& rm -r src \
\
&& sed -ri \
-e 's!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g' \
-e 's!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g' \
"$HTTPD_PREFIX/conf/httpd.conf" \
\
&& runDeps="$runDeps $( \
scanelf --needed --nobanner --recursive /usr/local \
| awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
| sort -u \
| xargs -r apk info --installed \
| sort -u \
)" \
&& apk add --virtual .httpd-rundeps $runDeps \
&& apk del .build-deps
COPY httpd-foreground /usr/local/bin/
EXPOSE 80
CMD ["httpd-foreground"]

7
2.4/alpine/httpd-foreground Executable file
View File

@ -0,0 +1,7 @@
#!/bin/sh
set -e
# Apache gets grumpy about PID files pre-existing
rm -f /usr/local/apache2/logs/httpd.pid
exec httpd -DFOREGROUND

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/sh
set -e
# Apache gets grumpy about PID files pre-existing

View File

@ -65,4 +65,20 @@ for version in "${versions[@]}"; do
GitCommit: $commit
Directory: $version
EOE
for variant in alpine; do
[ -f "$version/$variant/Dockerfile" ] || continue
commit="$(dirCommit "$version/$variant")"
variantAliases=( "${versionAliases[@]/%/-$variant}" )
variantAliases=( "${variantAliases[@]//latest-/}" )
echo
cat <<-EOE
Tags: $(join ', ' "${variantAliases[@]}")
GitCommit: $commit
Directory: $version/$variant
EOE
done
done

View File

@ -13,13 +13,18 @@ versions=( "${versions[@]%/}" )
travisEnv=
for version in "${versions[@]}"; do
fullVersion="$(curl -sSL --compressed "https://www.apache.org/dist/httpd/" | grep -E '<a href="httpd-'"$version"'[^"-]+.tar.bz2"' | sed -r 's!.*<a href="httpd-([^"-]+).tar.bz2".*!\1!' | sort -V | tail -1)"
sha1="$(curl -fsSL "https://www.apache.org/dist/httpd/httpd-$fullVersion.tar.bz2.sha1" | cut -d' ' -f1)"
(
set -x
sed -ri '
s/^(ENV HTTPD_VERSION) .*/\1 '"$fullVersion"'/;
' "$version/Dockerfile"
sed -ri \
-e 's/^(ENV HTTPD_VERSION) .*/\1 '"$fullVersion"'/' \
-e 's/^(ENV HTTPD_SHA1) .*/\1 '"$sha1"'/' \
"$version/Dockerfile" "$version"/*/Dockerfile
)
for variant in alpine; do
travisEnv='\n - VERSION='"$version VARIANT=$variant$travisEnv"
done
travisEnv='\n - VERSION='"$version$travisEnv"
done