Skip to content

Commit cf4acba

Browse files
committed
Fix the build by explicitly using jessie (and better install/uninstall of dependencies)
1 parent 358b045 commit cf4acba

File tree

3 files changed

+84
-51
lines changed

3 files changed

+84
-51
lines changed

3.3/Dockerfile

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ruby:2.3-slim
1+
FROM ruby:2.3-slim-jessie
22

33
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
44
RUN groupadd -r redmine && useradd -r -g redmine redmine
@@ -33,11 +33,6 @@ RUN set -x \
3333
&& tini -h
3434

3535
RUN apt-get update && apt-get install -y --no-install-recommends \
36-
imagemagick \
37-
libmysqlclient18 \
38-
libpq5 \
39-
libsqlite3-0 \
40-
\
4136
bzr \
4237
git \
4338
mercurial \
@@ -58,7 +53,12 @@ RUN wget -O redmine.tar.gz "https://www.redmine.org/releases/redmine-${REDMINE_V
5853
&& mkdir -p tmp/pdf public/plugin_assets \
5954
&& chown -R redmine:redmine ./
6055

61-
RUN buildDeps=' \
56+
RUN set -eux; \
57+
\
58+
savedAptMark="$(apt-mark showmanual)"; \
59+
apt-get update; \
60+
apt-get install -y --no-install-recommends \
61+
freetds-dev \
6262
gcc \
6363
libmagickcore-dev \
6464
libmagickwand-dev \
@@ -67,20 +67,31 @@ RUN buildDeps=' \
6767
libsqlite3-dev \
6868
make \
6969
patch \
70-
' \
71-
&& set -ex \
72-
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
73-
&& rm -rf /var/lib/apt/lists/* \
74-
&& bundle install --without development test \
75-
&& for adapter in mysql2 postgresql sqlserver sqlite3; do \
70+
; \
71+
rm -rf /var/lib/apt/lists/*; \
72+
\
73+
bundle install --without development test; \
74+
for adapter in mysql2 postgresql sqlserver sqlite3; do \
7675
echo "$RAILS_ENV:" > ./config/database.yml; \
7776
echo " adapter: $adapter" >> ./config/database.yml; \
7877
bundle install --without development test; \
7978
cp Gemfile.lock "Gemfile.lock.${adapter}"; \
80-
done \
81-
&& rm ./config/database.yml \
82-
&& apt-get purge -y --auto-remove $buildDeps
83-
79+
done; \
80+
rm ./config/database.yml; \
81+
\
82+
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
83+
apt-mark auto '.*' > /dev/null; \
84+
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
85+
find /usr/local -type f -executable -exec ldd '{}' ';' \
86+
| awk '/=>/ { print $(NF-1) }' \
87+
| sort -u \
88+
| grep -v '^/usr/local/' \
89+
| xargs -r dpkg-query --search \
90+
| cut -d: -f1 \
91+
| sort -u \
92+
| xargs -r apt-mark manual \
93+
; \
94+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
8495

8596
VOLUME /usr/src/redmine/files
8697

3.4/Dockerfile

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ruby:2.4-slim
1+
FROM ruby:2.4-slim-jessie
22

33
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
44
RUN groupadd -r redmine && useradd -r -g redmine redmine
@@ -33,11 +33,6 @@ RUN set -x \
3333
&& tini -h
3434

3535
RUN apt-get update && apt-get install -y --no-install-recommends \
36-
imagemagick \
37-
libmysqlclient18 \
38-
libpq5 \
39-
libsqlite3-0 \
40-
\
4136
bzr \
4237
git \
4338
mercurial \
@@ -58,7 +53,12 @@ RUN wget -O redmine.tar.gz "https://www.redmine.org/releases/redmine-${REDMINE_V
5853
&& mkdir -p tmp/pdf public/plugin_assets \
5954
&& chown -R redmine:redmine ./
6055

61-
RUN buildDeps=' \
56+
RUN set -eux; \
57+
\
58+
savedAptMark="$(apt-mark showmanual)"; \
59+
apt-get update; \
60+
apt-get install -y --no-install-recommends \
61+
freetds-dev \
6262
gcc \
6363
libmagickcore-dev \
6464
libmagickwand-dev \
@@ -67,20 +67,31 @@ RUN buildDeps=' \
6767
libsqlite3-dev \
6868
make \
6969
patch \
70-
' \
71-
&& set -ex \
72-
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
73-
&& rm -rf /var/lib/apt/lists/* \
74-
&& bundle install --without development test \
75-
&& for adapter in mysql2 postgresql sqlserver sqlite3; do \
70+
; \
71+
rm -rf /var/lib/apt/lists/*; \
72+
\
73+
bundle install --without development test; \
74+
for adapter in mysql2 postgresql sqlserver sqlite3; do \
7675
echo "$RAILS_ENV:" > ./config/database.yml; \
7776
echo " adapter: $adapter" >> ./config/database.yml; \
7877
bundle install --without development test; \
7978
cp Gemfile.lock "Gemfile.lock.${adapter}"; \
80-
done \
81-
&& rm ./config/database.yml \
82-
&& apt-get purge -y --auto-remove $buildDeps
83-
79+
done; \
80+
rm ./config/database.yml; \
81+
\
82+
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
83+
apt-mark auto '.*' > /dev/null; \
84+
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
85+
find /usr/local -type f -executable -exec ldd '{}' ';' \
86+
| awk '/=>/ { print $(NF-1) }' \
87+
| sort -u \
88+
| grep -v '^/usr/local/' \
89+
| xargs -r dpkg-query --search \
90+
| cut -d: -f1 \
91+
| sort -u \
92+
| xargs -r apt-mark manual \
93+
; \
94+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
8495

8596
VOLUME /usr/src/redmine/files
8697

Dockerfile.template

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ruby:%%RUBY_VERSION%%-slim
1+
FROM ruby:%%RUBY_VERSION%%-slim-jessie
22

33
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
44
RUN groupadd -r redmine && useradd -r -g redmine redmine
@@ -33,11 +33,6 @@ RUN set -x \
3333
&& tini -h
3434

3535
RUN apt-get update && apt-get install -y --no-install-recommends \
36-
imagemagick \
37-
libmysqlclient18 \
38-
libpq5 \
39-
libsqlite3-0 \
40-
\
4136
bzr \
4237
git \
4338
mercurial \
@@ -58,7 +53,12 @@ RUN wget -O redmine.tar.gz "https://www.redmine.org/releases/redmine-${REDMINE_V
5853
&& mkdir -p tmp/pdf public/plugin_assets \
5954
&& chown -R redmine:redmine ./
6055

61-
RUN buildDeps=' \
56+
RUN set -eux; \
57+
\
58+
savedAptMark="$(apt-mark showmanual)"; \
59+
apt-get update; \
60+
apt-get install -y --no-install-recommends \
61+
freetds-dev \
6262
gcc \
6363
libmagickcore-dev \
6464
libmagickwand-dev \
@@ -67,20 +67,31 @@ RUN buildDeps=' \
6767
libsqlite3-dev \
6868
make \
6969
patch \
70-
' \
71-
&& set -ex \
72-
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
73-
&& rm -rf /var/lib/apt/lists/* \
74-
&& bundle install --without development test \
75-
&& for adapter in mysql2 postgresql sqlserver sqlite3; do \
70+
; \
71+
rm -rf /var/lib/apt/lists/*; \
72+
\
73+
bundle install --without development test; \
74+
for adapter in mysql2 postgresql sqlserver sqlite3; do \
7675
echo "$RAILS_ENV:" > ./config/database.yml; \
7776
echo " adapter: $adapter" >> ./config/database.yml; \
7877
bundle install --without development test; \
7978
cp Gemfile.lock "Gemfile.lock.${adapter}"; \
80-
done \
81-
&& rm ./config/database.yml \
82-
&& apt-get purge -y --auto-remove $buildDeps
83-
79+
done; \
80+
rm ./config/database.yml; \
81+
\
82+
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
83+
apt-mark auto '.*' > /dev/null; \
84+
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \
85+
find /usr/local -type f -executable -exec ldd '{}' ';' \
86+
| awk '/=>/ { print $(NF-1) }' \
87+
| sort -u \
88+
| grep -v '^/usr/local/' \
89+
| xargs -r dpkg-query --search \
90+
| cut -d: -f1 \
91+
| sort -u \
92+
| xargs -r apt-mark manual \
93+
; \
94+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false
8495

8596
VOLUME /usr/src/redmine/files
8697

0 commit comments

Comments
 (0)