Skip to content

Multistage builds #132

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

Closed
wants to merge 2 commits into from
Closed
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
16 changes: 8 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,28 @@ language: bash
services: docker

env:
- VERSION=9.0 VARIANT=jre8
- VERSION=9.0 VARIANT=jre8-slim
- VERSION=9.0 VARIANT=jre8-alpine
- VERSION=9.0 VARIANT=jre8
- VERSION=9.0 VARIANT=jre10-slim
- VERSION=9.0 VARIANT=jre10
- VERSION=9.0 VARIANT=jre10-slim
- VERSION=8.5 VARIANT=jre8
- VERSION=8.5 VARIANT=jre8-slim
- VERSION=8.5 VARIANT=jre8-alpine
- VERSION=8.5 VARIANT=jre8
- VERSION=8.5 VARIANT=jre10-slim
- VERSION=8.5 VARIANT=jre10
- VERSION=8.5 VARIANT=jre10-slim
- VERSION=8.0 VARIANT=jre8
- VERSION=8.0 VARIANT=jre8-slim
- VERSION=8.0 VARIANT=jre8-alpine
- VERSION=8.0 VARIANT=jre8
- VERSION=8.0 VARIANT=jre7
- VERSION=8.0 VARIANT=jre7-slim
- VERSION=8.0 VARIANT=jre7-alpine
- VERSION=8.0 VARIANT=jre7
- VERSION=7 VARIANT=jre8
- VERSION=7 VARIANT=jre8-slim
- VERSION=7 VARIANT=jre8-alpine
- VERSION=7 VARIANT=jre8
- VERSION=7 VARIANT=jre7
- VERSION=7 VARIANT=jre7-slim
- VERSION=7 VARIANT=jre7-alpine
- VERSION=7 VARIANT=jre7

install:
- git clone https://github.com/docker-library/official-images.git ~/official-images
Expand Down
29 changes: 15 additions & 14 deletions 7/jre7-alpine/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:7-jre-alpine
FROM openjdk:7-jre-alpine as common-packages

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
Expand All @@ -9,6 +9,17 @@ WORKDIR $CATALINA_HOME
ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR

RUN set -eux; \
\
apk add --no-cache --virtual .tomcat-rundeps \
ca-certificates \
openssl \
bash \
apr \
libuuid

FROM common-packages as builder

# see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS
# see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh)
ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
Expand Down Expand Up @@ -36,9 +47,6 @@ RUN set -eux; \
\
apk add --no-cache --virtual .fetch-deps \
gnupg \
\
ca-certificates \
openssl \
; \
\
export GNUPGHOME="$(mktemp -d)"; \
Expand Down Expand Up @@ -102,18 +110,8 @@ RUN set -eux; \
rm -rf "$nativeBuildDir"; \
rm bin/tomcat-native.tar.gz; \
\
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive "$TOMCAT_NATIVE_LIBDIR" \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --virtual .tomcat-native-rundeps $runDeps; \
apk del .fetch-deps .native-build-deps; \
\
# sh removes env vars it doesn't support (ones with periods)
# https://github.com/docker-library/tomcat/issues/77
apk add --no-cache bash; \
find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +; \
\
# fix permissions (especially for running as non-root)
Expand All @@ -131,5 +129,8 @@ RUN set -e \
exit 1; \
fi

FROM common-packages as runtime
COPY --from=builder $CATALINA_HOME $CATALINA_HOME

EXPOSE 8080
CMD ["catalina.sh", "run"]
16 changes: 8 additions & 8 deletions 7/jre7-slim/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:7-jre-slim
FROM openjdk:7-jre-slim AS common-packages

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
Expand Down Expand Up @@ -47,6 +47,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libapr1 \
&& rm -rf /var/lib/apt/lists/*

FROM common-packages as builder

# see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS
# see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh)
ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
Expand Down Expand Up @@ -138,12 +140,6 @@ RUN set -eux; \
rm -rf "$nativeBuildDir"; \
rm bin/tomcat-native.tar.gz; \
\
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
apt-mark auto '.*' > /dev/null; \
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
rm -rf /var/lib/apt/lists/*; \
\
# sh removes env vars it doesn't support (ones with periods)
# https://github.com/docker-library/tomcat/issues/77
find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +; \
Expand All @@ -163,5 +159,9 @@ RUN set -e \
exit 1; \
fi



FROM common-packages as runtime
COPY --from=builder $CATALINA_HOME $CATALINA_HOME
EXPOSE 8080
CMD ["catalina.sh", "run"]
CMD ["catalina.sh", "run"]
16 changes: 8 additions & 8 deletions 7/jre7/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:7-jre
FROM openjdk:7-jre AS common-packages

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
Expand Down Expand Up @@ -47,6 +47,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libapr1 \
&& rm -rf /var/lib/apt/lists/*

FROM common-packages as builder

# see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS
# see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh)
ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
Expand Down Expand Up @@ -138,12 +140,6 @@ RUN set -eux; \
rm -rf "$nativeBuildDir"; \
rm bin/tomcat-native.tar.gz; \
\
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
apt-mark auto '.*' > /dev/null; \
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
rm -rf /var/lib/apt/lists/*; \
\
# sh removes env vars it doesn't support (ones with periods)
# https://github.com/docker-library/tomcat/issues/77
find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +; \
Expand All @@ -163,5 +159,9 @@ RUN set -e \
exit 1; \
fi



FROM common-packages as runtime
COPY --from=builder $CATALINA_HOME $CATALINA_HOME
EXPOSE 8080
CMD ["catalina.sh", "run"]
CMD ["catalina.sh", "run"]
29 changes: 15 additions & 14 deletions 7/jre8-alpine/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:8-jre-alpine
FROM openjdk:8-jre-alpine as common-packages

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
Expand All @@ -9,6 +9,17 @@ WORKDIR $CATALINA_HOME
ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR

RUN set -eux; \
\
apk add --no-cache --virtual .tomcat-rundeps \
ca-certificates \
openssl \
bash \
apr \
libuuid

FROM common-packages as builder

# see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS
# see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh)
ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
Expand Down Expand Up @@ -36,9 +47,6 @@ RUN set -eux; \
\
apk add --no-cache --virtual .fetch-deps \
gnupg \
\
ca-certificates \
openssl \
; \
\
export GNUPGHOME="$(mktemp -d)"; \
Expand Down Expand Up @@ -102,18 +110,8 @@ RUN set -eux; \
rm -rf "$nativeBuildDir"; \
rm bin/tomcat-native.tar.gz; \
\
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive "$TOMCAT_NATIVE_LIBDIR" \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --virtual .tomcat-native-rundeps $runDeps; \
apk del .fetch-deps .native-build-deps; \
\
# sh removes env vars it doesn't support (ones with periods)
# https://github.com/docker-library/tomcat/issues/77
apk add --no-cache bash; \
find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +; \
\
# fix permissions (especially for running as non-root)
Expand All @@ -131,5 +129,8 @@ RUN set -e \
exit 1; \
fi

FROM common-packages as runtime
COPY --from=builder $CATALINA_HOME $CATALINA_HOME

EXPOSE 8080
CMD ["catalina.sh", "run"]
16 changes: 8 additions & 8 deletions 7/jre8-slim/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:8-jre-slim
FROM openjdk:8-jre-slim AS common-packages

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
Expand Down Expand Up @@ -47,6 +47,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libapr1 \
&& rm -rf /var/lib/apt/lists/*

FROM common-packages as builder

# see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS
# see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh)
ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
Expand Down Expand Up @@ -138,12 +140,6 @@ RUN set -eux; \
rm -rf "$nativeBuildDir"; \
rm bin/tomcat-native.tar.gz; \
\
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
apt-mark auto '.*' > /dev/null; \
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
rm -rf /var/lib/apt/lists/*; \
\
# sh removes env vars it doesn't support (ones with periods)
# https://github.com/docker-library/tomcat/issues/77
find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +; \
Expand All @@ -163,5 +159,9 @@ RUN set -e \
exit 1; \
fi



FROM common-packages as runtime
COPY --from=builder $CATALINA_HOME $CATALINA_HOME
EXPOSE 8080
CMD ["catalina.sh", "run"]
CMD ["catalina.sh", "run"]
16 changes: 8 additions & 8 deletions 7/jre8/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:8-jre
FROM openjdk:8-jre AS common-packages

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
Expand Down Expand Up @@ -47,6 +47,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libapr1 \
&& rm -rf /var/lib/apt/lists/*

FROM common-packages as builder

# see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS
# see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh)
ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
Expand Down Expand Up @@ -138,12 +140,6 @@ RUN set -eux; \
rm -rf "$nativeBuildDir"; \
rm bin/tomcat-native.tar.gz; \
\
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
apt-mark auto '.*' > /dev/null; \
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
rm -rf /var/lib/apt/lists/*; \
\
# sh removes env vars it doesn't support (ones with periods)
# https://github.com/docker-library/tomcat/issues/77
find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +; \
Expand All @@ -163,5 +159,9 @@ RUN set -e \
exit 1; \
fi



FROM common-packages as runtime
COPY --from=builder $CATALINA_HOME $CATALINA_HOME
EXPOSE 8080
CMD ["catalina.sh", "run"]
CMD ["catalina.sh", "run"]
29 changes: 15 additions & 14 deletions 8.0/jre7-alpine/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM openjdk:7-jre-alpine
FROM openjdk:7-jre-alpine as common-packages

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
Expand All @@ -9,6 +9,17 @@ WORKDIR $CATALINA_HOME
ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR

RUN set -eux; \
\
apk add --no-cache --virtual .tomcat-rundeps \
ca-certificates \
openssl \
bash \
apr \
libuuid

FROM common-packages as builder

# see https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/KEYS
# see also "update.sh" (https://github.com/docker-library/tomcat/blob/master/update.sh)
ENV GPG_KEYS 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
Expand Down Expand Up @@ -36,9 +47,6 @@ RUN set -eux; \
\
apk add --no-cache --virtual .fetch-deps \
gnupg \
\
ca-certificates \
openssl \
; \
\
export GNUPGHOME="$(mktemp -d)"; \
Expand Down Expand Up @@ -102,18 +110,8 @@ RUN set -eux; \
rm -rf "$nativeBuildDir"; \
rm bin/tomcat-native.tar.gz; \
\
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive "$TOMCAT_NATIVE_LIBDIR" \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --virtual .tomcat-native-rundeps $runDeps; \
apk del .fetch-deps .native-build-deps; \
\
# sh removes env vars it doesn't support (ones with periods)
# https://github.com/docker-library/tomcat/issues/77
apk add --no-cache bash; \
find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +; \
\
# fix permissions (especially for running as non-root)
Expand All @@ -131,5 +129,8 @@ RUN set -e \
exit 1; \
fi

FROM common-packages as runtime
COPY --from=builder $CATALINA_HOME $CATALINA_HOME

EXPOSE 8080
CMD ["catalina.sh", "run"]
Loading