Skip to content

Commit caeffe0

Browse files
committed
Tweak a few more things
1 parent 084ed67 commit caeffe0

File tree

5 files changed

+146
-127
lines changed

5 files changed

+146
-127
lines changed

.travis.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,20 @@ install:
1010

1111
before_script:
1212
- env | sort
13+
- wget -qO- 'https://github.com/tianon/pgp-happy-eyeballs/raw/master/hack-my-builds.sh' | bash
1314
- cd "$VERSION"
1415
- image="$(awk '$1 == "FROM" { print $2; exit }' passenger/Dockerfile)"
1516

1617
script:
17-
- travis_retry docker build -t "$image" .
18-
- ~/official-images/test/run.sh "$image"
19-
- travis_retry docker build -t "$image-passenger" passenger
20-
- ~/official-images/test/run.sh "$image-passenger"
18+
- |
19+
(
20+
set -Eeuo pipefail
21+
set -x
22+
docker build -t "$image" .
23+
~/official-images/test/run.sh "$image"
24+
docker build -t "$image-passenger" passenger
25+
~/official-images/test/run.sh "$image-passenger"
26+
)
2127
2228
after_script:
2329
- docker images

3.3/Dockerfile

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -8,49 +8,49 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
88
wget \
99
&& rm -rf /var/lib/apt/lists/*
1010

11-
# grab gosu for easy step-down from root
12-
ENV GOSU_VERSION 1.10
13-
RUN set -x \
14-
&& fetchDeps=" \
11+
RUN set -eux; \
12+
savedAptMark="$(apt-mark showmanual)"; \
13+
apt-get update; \
14+
apt-get install -y --no-install-recommends \
15+
ca-certificates \
1516
dirmngr \
1617
gnupg \
17-
" \
18-
&& apt-get update \
19-
&& apt-get install -y --no-install-recommends $fetchDeps \
18+
wget \
19+
; \
20+
rm -rf /var/lib/apt/lists/*; \
21+
\
22+
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
23+
\
24+
# grab gosu for easy step-down from root
25+
# https://github.com/tianon/gosu/releases
26+
export GOSU_VERSION='1.10'; \
27+
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
28+
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
29+
export GNUPGHOME="$(mktemp -d)"; \
30+
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
31+
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
32+
gpgconf --kill all; \
33+
rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \
34+
chmod +x /usr/local/bin/gosu; \
35+
gosu nobody true; \
2036
\
21-
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
22-
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
23-
&& export GNUPGHOME="$(mktemp -d)" \
24-
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
25-
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
26-
&& gpgconf --kill all \
27-
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
28-
&& chmod +x /usr/local/bin/gosu \
29-
&& gosu nobody true \
30-
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
31-
&& rm -rf /var/lib/apt/lists/*
32-
3337
# grab tini for signal processing and zombie killing
34-
ENV TINI_VERSION v0.16.1
35-
RUN set -x \
36-
&& fetchDeps=" \
37-
dirmngr \
38-
gnupg \
39-
" \
40-
&& apt-get update \
41-
&& apt-get install -y --no-install-recommends $fetchDeps \
38+
# https://github.com/krallin/tini/releases
39+
export TINI_VERSION='0.18.0'; \
40+
wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/v$TINI_VERSION/tini-$dpkgArch"; \
41+
wget -O /usr/local/bin/tini.asc "https://github.com/krallin/tini/releases/download/v$TINI_VERSION/tini-$dpkgArch.asc"; \
42+
export GNUPGHOME="$(mktemp -d)"; \
43+
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 6380DC428747F6C393FEACA59A84159D7001A4E5; \
44+
gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini; \
45+
gpgconf --kill all; \
46+
rm -r "$GNUPGHOME" /usr/local/bin/tini.asc; \
47+
chmod +x /usr/local/bin/tini; \
48+
tini -h; \
4249
\
43-
&& wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/$TINI_VERSION/tini-$(dpkg --print-architecture)" \
44-
&& wget -O /usr/local/bin/tini.asc "https://github.com/krallin/tini/releases/download/$TINI_VERSION/tini-$(dpkg --print-architecture).asc" \
45-
&& export GNUPGHOME="$(mktemp -d)" \
46-
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 6380DC428747F6C393FEACA59A84159D7001A4E5 \
47-
&& gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini \
48-
&& gpgconf --kill all \
49-
&& rm -r "$GNUPGHOME" /usr/local/bin/tini.asc \
50-
&& chmod +x /usr/local/bin/tini \
51-
&& tini -h \
52-
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
53-
&& rm -rf /var/lib/apt/lists/*
50+
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
51+
apt-mark auto '.*' > /dev/null; \
52+
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
53+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
5454

5555
RUN apt-get update && apt-get install -y --no-install-recommends \
5656
bzr \
@@ -79,17 +79,20 @@ RUN set -eux; \
7979
savedAptMark="$(apt-mark showmanual)"; \
8080
apt-get update; \
8181
apt-get install -y --no-install-recommends \
82-
freetds-dev \
8382
gcc \
8483
libmagickcore-dev \
8584
libmagickwand-dev \
8685
libmariadbclient-dev \
8786
libpq-dev \
8887
libsqlite3-dev \
89-
# TinyTDS 1.0.x requires openssl 1.0.x
90-
libssl1.0-dev \
9188
make \
9289
patch \
90+
\
91+
# tiny_tds 0.6.x requires freetds-dev from Debian (but Redmine 3.4 uses tiny_tds 1.0.x which downloads a newer version anyhow)
92+
freetds-dev \
93+
# tiny_tds 1.0.x requires OpenSSL 1.0
94+
# see https://github.com/rails-sqlserver/tiny_tds/commit/3269dd3bcfbe4201ab51aa2870a6aaddfcbdfa5d (tiny_tds 1.2.x+ is required for OpenSSL 1.1 support)
95+
libssl1.0-dev \
9396
; \
9497
rm -rf /var/lib/apt/lists/*; \
9598
\

3.4/Dockerfile

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -8,49 +8,49 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
88
wget \
99
&& rm -rf /var/lib/apt/lists/*
1010

11-
# grab gosu for easy step-down from root
12-
ENV GOSU_VERSION 1.10
13-
RUN set -x \
14-
&& fetchDeps=" \
11+
RUN set -eux; \
12+
savedAptMark="$(apt-mark showmanual)"; \
13+
apt-get update; \
14+
apt-get install -y --no-install-recommends \
15+
ca-certificates \
1516
dirmngr \
1617
gnupg \
17-
" \
18-
&& apt-get update \
19-
&& apt-get install -y --no-install-recommends $fetchDeps \
18+
wget \
19+
; \
20+
rm -rf /var/lib/apt/lists/*; \
21+
\
22+
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
23+
\
24+
# grab gosu for easy step-down from root
25+
# https://github.com/tianon/gosu/releases
26+
export GOSU_VERSION='1.10'; \
27+
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
28+
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
29+
export GNUPGHOME="$(mktemp -d)"; \
30+
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
31+
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
32+
gpgconf --kill all; \
33+
rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \
34+
chmod +x /usr/local/bin/gosu; \
35+
gosu nobody true; \
2036
\
21-
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
22-
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
23-
&& export GNUPGHOME="$(mktemp -d)" \
24-
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
25-
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
26-
&& gpgconf --kill all \
27-
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
28-
&& chmod +x /usr/local/bin/gosu \
29-
&& gosu nobody true \
30-
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
31-
&& rm -rf /var/lib/apt/lists/*
32-
3337
# grab tini for signal processing and zombie killing
34-
ENV TINI_VERSION v0.16.1
35-
RUN set -x \
36-
&& fetchDeps=" \
37-
dirmngr \
38-
gnupg \
39-
" \
40-
&& apt-get update \
41-
&& apt-get install -y --no-install-recommends $fetchDeps \
38+
# https://github.com/krallin/tini/releases
39+
export TINI_VERSION='0.18.0'; \
40+
wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/v$TINI_VERSION/tini-$dpkgArch"; \
41+
wget -O /usr/local/bin/tini.asc "https://github.com/krallin/tini/releases/download/v$TINI_VERSION/tini-$dpkgArch.asc"; \
42+
export GNUPGHOME="$(mktemp -d)"; \
43+
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 6380DC428747F6C393FEACA59A84159D7001A4E5; \
44+
gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini; \
45+
gpgconf --kill all; \
46+
rm -r "$GNUPGHOME" /usr/local/bin/tini.asc; \
47+
chmod +x /usr/local/bin/tini; \
48+
tini -h; \
4249
\
43-
&& wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/$TINI_VERSION/tini-$(dpkg --print-architecture)" \
44-
&& wget -O /usr/local/bin/tini.asc "https://github.com/krallin/tini/releases/download/$TINI_VERSION/tini-$(dpkg --print-architecture).asc" \
45-
&& export GNUPGHOME="$(mktemp -d)" \
46-
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 6380DC428747F6C393FEACA59A84159D7001A4E5 \
47-
&& gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini \
48-
&& gpgconf --kill all \
49-
&& rm -r "$GNUPGHOME" /usr/local/bin/tini.asc \
50-
&& chmod +x /usr/local/bin/tini \
51-
&& tini -h \
52-
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
53-
&& rm -rf /var/lib/apt/lists/*
50+
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
51+
apt-mark auto '.*' > /dev/null; \
52+
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
53+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
5454

5555
RUN apt-get update && apt-get install -y --no-install-recommends \
5656
bzr \
@@ -79,17 +79,18 @@ RUN set -eux; \
7979
savedAptMark="$(apt-mark showmanual)"; \
8080
apt-get update; \
8181
apt-get install -y --no-install-recommends \
82-
freetds-dev \
8382
gcc \
8483
libmagickcore-dev \
8584
libmagickwand-dev \
8685
libmariadbclient-dev \
8786
libpq-dev \
8887
libsqlite3-dev \
89-
# TinyTDS 1.0.x requires openssl 1.0.x
90-
libssl1.0-dev \
9188
make \
9289
patch \
90+
\
91+
# tiny_tds 1.0.x requires OpenSSL 1.0
92+
# see https://github.com/rails-sqlserver/tiny_tds/commit/3269dd3bcfbe4201ab51aa2870a6aaddfcbdfa5d (tiny_tds 1.2.x+ is required for OpenSSL 1.1 support)
93+
libssl1.0-dev \
9394
; \
9495
rm -rf /var/lib/apt/lists/*; \
9596
\

Dockerfile.template

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -8,49 +8,49 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
88
wget \
99
&& rm -rf /var/lib/apt/lists/*
1010

11-
# grab gosu for easy step-down from root
12-
ENV GOSU_VERSION 1.10
13-
RUN set -x \
14-
&& fetchDeps=" \
11+
RUN set -eux; \
12+
savedAptMark="$(apt-mark showmanual)"; \
13+
apt-get update; \
14+
apt-get install -y --no-install-recommends \
15+
ca-certificates \
1516
dirmngr \
1617
gnupg \
17-
" \
18-
&& apt-get update \
19-
&& apt-get install -y --no-install-recommends $fetchDeps \
18+
wget \
19+
; \
20+
rm -rf /var/lib/apt/lists/*; \
21+
\
22+
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
23+
\
24+
# grab gosu for easy step-down from root
25+
# https://github.com/tianon/gosu/releases
26+
export GOSU_VERSION='1.10'; \
27+
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
28+
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
29+
export GNUPGHOME="$(mktemp -d)"; \
30+
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
31+
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
32+
gpgconf --kill all; \
33+
rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \
34+
chmod +x /usr/local/bin/gosu; \
35+
gosu nobody true; \
2036
\
21-
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
22-
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
23-
&& export GNUPGHOME="$(mktemp -d)" \
24-
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
25-
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
26-
&& gpgconf --kill all \
27-
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
28-
&& chmod +x /usr/local/bin/gosu \
29-
&& gosu nobody true \
30-
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
31-
&& rm -rf /var/lib/apt/lists/*
32-
3337
# grab tini for signal processing and zombie killing
34-
ENV TINI_VERSION v0.16.1
35-
RUN set -x \
36-
&& fetchDeps=" \
37-
dirmngr \
38-
gnupg \
39-
" \
40-
&& apt-get update \
41-
&& apt-get install -y --no-install-recommends $fetchDeps \
38+
# https://github.com/krallin/tini/releases
39+
export TINI_VERSION='0.18.0'; \
40+
wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/v$TINI_VERSION/tini-$dpkgArch"; \
41+
wget -O /usr/local/bin/tini.asc "https://github.com/krallin/tini/releases/download/v$TINI_VERSION/tini-$dpkgArch.asc"; \
42+
export GNUPGHOME="$(mktemp -d)"; \
43+
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 6380DC428747F6C393FEACA59A84159D7001A4E5; \
44+
gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini; \
45+
gpgconf --kill all; \
46+
rm -r "$GNUPGHOME" /usr/local/bin/tini.asc; \
47+
chmod +x /usr/local/bin/tini; \
48+
tini -h; \
4249
\
43-
&& wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/$TINI_VERSION/tini-$(dpkg --print-architecture)" \
44-
&& wget -O /usr/local/bin/tini.asc "https://github.com/krallin/tini/releases/download/$TINI_VERSION/tini-$(dpkg --print-architecture).asc" \
45-
&& export GNUPGHOME="$(mktemp -d)" \
46-
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 6380DC428747F6C393FEACA59A84159D7001A4E5 \
47-
&& gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini \
48-
&& gpgconf --kill all \
49-
&& rm -r "$GNUPGHOME" /usr/local/bin/tini.asc \
50-
&& chmod +x /usr/local/bin/tini \
51-
&& tini -h \
52-
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps \
53-
&& rm -rf /var/lib/apt/lists/*
50+
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
51+
apt-mark auto '.*' > /dev/null; \
52+
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
53+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
5454

5555
RUN apt-get update && apt-get install -y --no-install-recommends \
5656
bzr \
@@ -79,17 +79,20 @@ RUN set -eux; \
7979
savedAptMark="$(apt-mark showmanual)"; \
8080
apt-get update; \
8181
apt-get install -y --no-install-recommends \
82-
freetds-dev \
8382
gcc \
8483
libmagickcore-dev \
8584
libmagickwand-dev \
8685
libmariadbclient-dev \
8786
libpq-dev \
8887
libsqlite3-dev \
89-
# TinyTDS 1.0.x requires openssl 1.0.x
90-
libssl1.0-dev \
9188
make \
9289
patch \
90+
\
91+
# tiny_tds 0.6.x requires freetds-dev from Debian (but Redmine 3.4 uses tiny_tds 1.0.x which downloads a newer version anyhow)
92+
freetds-dev \
93+
# tiny_tds 1.0.x requires OpenSSL 1.0
94+
# see https://github.com/rails-sqlserver/tiny_tds/commit/3269dd3bcfbe4201ab51aa2870a6aaddfcbdfa5d (tiny_tds 1.2.x+ is required for OpenSSL 1.1 support)
95+
libssl1.0-dev \
9396
; \
9497
rm -rf /var/lib/apt/lists/*; \
9598
\

update.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ for version in "${versions[@]}"; do
4242
Dockerfile-passenger.template > "$version/passenger/Dockerfile"
4343
)
4444

45+
if [ "$version" != '3.3' ]; then
46+
# redmine 3.3 uses tiny_tds 0.6.x, which needs freetds-dev installed
47+
# redmine 3.4 users tiny_tds 1.0.x, which requires (and downloads) a newer FreeTDS than Debian even offers
48+
sed -ri -e '/freetds-dev/d' "$version/Dockerfile"
49+
fi
50+
4551
travisEnv='\n - VERSION='"$version$travisEnv"
4652
done
4753

0 commit comments

Comments
 (0)