Skip to content

Commit 620d6e4

Browse files
committed
Merge pull request #8 from rbayliss/3.x_releases
Add Dockerfiles for 3.1 and 3.2 releases
2 parents 5baaf21 + 34418b8 commit 620d6e4

File tree

7 files changed

+332
-0
lines changed

7 files changed

+332
-0
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ language: bash
22
services: docker
33

44
env:
5+
- VERSION=3.2
6+
- VERSION=3.1
57
- VERSION=3.0
68
- VERSION=2.6
79

3.1/Dockerfile

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
FROM ruby:2.2-slim
2+
3+
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
4+
RUN groupadd -r redmine && useradd -r -g redmine redmine
5+
6+
# grab gosu for easy step-down from root
7+
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4
8+
RUN curl -o /usr/local/bin/gosu -SL "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture)" \
9+
&& curl -o /usr/local/bin/gosu.asc -SL "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture).asc" \
10+
&& gpg --verify /usr/local/bin/gosu.asc \
11+
&& rm /usr/local/bin/gosu.asc \
12+
&& chmod +x /usr/local/bin/gosu
13+
14+
RUN set -x \
15+
&& curl -fSL "https://github.com/krallin/tini/releases/download/v0.5.0/tini" -o /usr/local/bin/tini \
16+
&& chmod +x /usr/local/bin/tini \
17+
&& tini -h
18+
19+
RUN apt-get update && apt-get install -y --no-install-recommends \
20+
imagemagick \
21+
libmysqlclient18 \
22+
libpq5 \
23+
libsqlite3-0 \
24+
&& rm -rf /var/lib/apt/lists/*
25+
26+
ENV RAILS_ENV production
27+
WORKDIR /usr/src/redmine
28+
29+
ENV REDMINE_VERSION 3.1.3
30+
ENV REDMINE_DOWNLOAD_MD5 09b0bbcef859fef51022750a94db7579
31+
32+
RUN curl -fSL "http://www.redmine.org/releases/redmine-${REDMINE_VERSION}.tar.gz" -o redmine.tar.gz \
33+
&& echo "$REDMINE_DOWNLOAD_MD5 redmine.tar.gz" | md5sum -c - \
34+
&& tar -xvf redmine.tar.gz --strip-components=1 \
35+
&& rm redmine.tar.gz files/delete.me log/delete.me \
36+
&& mkdir -p tmp/pdf public/plugin_assets \
37+
&& chown -R redmine:redmine ./
38+
39+
RUN buildDeps='\
40+
gcc \
41+
libmagickcore-dev \
42+
libmagickwand-dev \
43+
libmysqlclient-dev \
44+
libpq-dev \
45+
libsqlite3-dev \
46+
make \
47+
patch \
48+
' \
49+
&& set -ex \
50+
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
51+
&& rm -rf /var/lib/apt/lists/* \
52+
&& bundle install --without development test \
53+
&& for adapter in mysql2 postgresql sqlite3; do \
54+
echo "$RAILS_ENV:" > ./config/database.yml; \
55+
echo " adapter: $adapter" >> ./config/database.yml; \
56+
bundle install --without development test; \
57+
done \
58+
&& rm ./config/database.yml \
59+
&& apt-get purge -y --auto-remove $buildDeps
60+
61+
62+
VOLUME /usr/src/redmine/files
63+
64+
COPY docker-entrypoint.sh /
65+
ENTRYPOINT ["/docker-entrypoint.sh"]
66+
67+
EXPOSE 3000
68+
CMD ["rails", "server", "-b", "0.0.0.0"]

3.1/docker-entrypoint.sh

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
#!/bin/bash
2+
set -e
3+
4+
case "$1" in
5+
rails|rake|passenger)
6+
if [ ! -f './config/database.yml' ]; then
7+
if [ "$MYSQL_PORT_3306_TCP" ]; then
8+
adapter='mysql2'
9+
host='mysql'
10+
port="${MYSQL_PORT_3306_TCP_PORT:-3306}"
11+
username="${MYSQL_ENV_MYSQL_USER:-root}"
12+
password="${MYSQL_ENV_MYSQL_PASSWORD:-$MYSQL_ENV_MYSQL_ROOT_PASSWORD}"
13+
database="${MYSQL_ENV_MYSQL_DATABASE:-${MYSQL_ENV_MYSQL_USER:-redmine}}"
14+
encoding=
15+
elif [ "$POSTGRES_PORT_5432_TCP" ]; then
16+
adapter='postgresql'
17+
host='postgres'
18+
port="${POSTGRES_PORT_5432_TCP_PORT:-5432}"
19+
username="${POSTGRES_ENV_POSTGRES_USER:-postgres}"
20+
password="${POSTGRES_ENV_POSTGRES_PASSWORD}"
21+
database="${POSTGRES_ENV_POSTGRES_DB:-$username}"
22+
encoding=utf8
23+
else
24+
echo >&2 'warning: missing MYSQL_PORT_3306_TCP or POSTGRES_PORT_5432_TCP environment variables'
25+
echo >&2 ' Did you forget to --link some_mysql_container:mysql or some-postgres:postgres?'
26+
echo >&2
27+
echo >&2 '*** Using sqlite3 as fallback. ***'
28+
29+
adapter='sqlite3'
30+
host='localhost'
31+
username='redmine'
32+
database='sqlite/redmine.db'
33+
encoding=utf8
34+
35+
mkdir -p "$(dirname "$database")"
36+
chown -R redmine:redmine "$(dirname "$database")"
37+
fi
38+
39+
cat > './config/database.yml' <<-YML
40+
$RAILS_ENV:
41+
adapter: $adapter
42+
database: $database
43+
host: $host
44+
username: $username
45+
password: "$password"
46+
encoding: $encoding
47+
port: $port
48+
YML
49+
fi
50+
51+
# ensure the right database adapter is active in the Gemfile.lock
52+
bundle install --without development test
53+
54+
if [ ! -s config/secrets.yml ]; then
55+
if [ "$REDMINE_SECRET_KEY_BASE" ]; then
56+
cat > 'config/secrets.yml' <<-YML
57+
$RAILS_ENV:
58+
secret_key_base: "$REDMINE_SECRET_KEY_BASE"
59+
YML
60+
elif [ ! -f /usr/src/redmine/config/initializers/secret_token.rb ]; then
61+
rake generate_secret_token
62+
fi
63+
fi
64+
if [ "$1" != 'rake' -a -z "$REDMINE_NO_DB_MIGRATE" ]; then
65+
gosu redmine rake db:migrate
66+
fi
67+
68+
chown -R redmine:redmine files log public/plugin_assets
69+
70+
# remove PID file to enable restarting the container
71+
rm -f /usr/src/redmine/tmp/pids/server.pid
72+
73+
if [ "$1" = 'passenger' ]; then
74+
# Don't fear the reaper.
75+
set -- tini -- "$@"
76+
fi
77+
78+
set -- gosu redmine "$@"
79+
;;
80+
esac
81+
82+
exec "$@"

3.1/passenger/Dockerfile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
FROM redmine:3.1
2+
3+
ENV PASSENGER_VERSION 5.0.23
4+
RUN buildDeps=' \
5+
make \
6+
' \
7+
&& set -x \
8+
&& apt-get update && apt-get install -y --no-install-recommends $buildDeps && rm -rf /var/lib/apt/lists/* \
9+
&& gem install passenger --version "$PASSENGER_VERSION" \
10+
&& apt-get purge -y --auto-remove $buildDeps
11+
RUN set -x \
12+
&& passenger-config install-agent \
13+
&& passenger-config install-standalone-runtime
14+
15+
CMD ["passenger", "start"]

3.2/Dockerfile

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
FROM ruby:2.2-slim
2+
3+
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
4+
RUN groupadd -r redmine && useradd -r -g redmine redmine
5+
6+
# grab gosu for easy step-down from root
7+
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4
8+
RUN curl -o /usr/local/bin/gosu -SL "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture)" \
9+
&& curl -o /usr/local/bin/gosu.asc -SL "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture).asc" \
10+
&& gpg --verify /usr/local/bin/gosu.asc \
11+
&& rm /usr/local/bin/gosu.asc \
12+
&& chmod +x /usr/local/bin/gosu
13+
14+
RUN set -x \
15+
&& curl -fSL "https://github.com/krallin/tini/releases/download/v0.5.0/tini" -o /usr/local/bin/tini \
16+
&& chmod +x /usr/local/bin/tini \
17+
&& tini -h
18+
19+
RUN apt-get update && apt-get install -y --no-install-recommends \
20+
imagemagick \
21+
libmysqlclient18 \
22+
libpq5 \
23+
libsqlite3-0 \
24+
&& rm -rf /var/lib/apt/lists/*
25+
26+
ENV RAILS_ENV production
27+
WORKDIR /usr/src/redmine
28+
29+
ENV REDMINE_VERSION 3.2.0
30+
ENV REDMINE_DOWNLOAD_MD5 b1050c3a0e6effd5a704ef5003d9df06
31+
32+
RUN curl -fSL "http://www.redmine.org/releases/redmine-${REDMINE_VERSION}.tar.gz" -o redmine.tar.gz \
33+
&& echo "$REDMINE_DOWNLOAD_MD5 redmine.tar.gz" | md5sum -c - \
34+
&& tar -xvf redmine.tar.gz --strip-components=1 \
35+
&& rm redmine.tar.gz files/delete.me log/delete.me \
36+
&& mkdir -p tmp/pdf public/plugin_assets \
37+
&& chown -R redmine:redmine ./
38+
39+
RUN buildDeps='\
40+
gcc \
41+
libmagickcore-dev \
42+
libmagickwand-dev \
43+
libmysqlclient-dev \
44+
libpq-dev \
45+
libsqlite3-dev \
46+
make \
47+
patch \
48+
' \
49+
&& set -ex \
50+
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
51+
&& rm -rf /var/lib/apt/lists/* \
52+
&& bundle install --without development test \
53+
&& for adapter in mysql2 postgresql sqlite3; do \
54+
echo "$RAILS_ENV:" > ./config/database.yml; \
55+
echo " adapter: $adapter" >> ./config/database.yml; \
56+
bundle install --without development test; \
57+
done \
58+
&& rm ./config/database.yml \
59+
&& apt-get purge -y --auto-remove $buildDeps
60+
61+
62+
VOLUME /usr/src/redmine/files
63+
64+
COPY docker-entrypoint.sh /
65+
ENTRYPOINT ["/docker-entrypoint.sh"]
66+
67+
EXPOSE 3000
68+
CMD ["rails", "server", "-b", "0.0.0.0"]

3.2/docker-entrypoint.sh

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
#!/bin/bash
2+
set -e
3+
4+
case "$1" in
5+
rails|rake|passenger)
6+
if [ ! -f './config/database.yml' ]; then
7+
if [ "$MYSQL_PORT_3306_TCP" ]; then
8+
adapter='mysql2'
9+
host='mysql'
10+
port="${MYSQL_PORT_3306_TCP_PORT:-3306}"
11+
username="${MYSQL_ENV_MYSQL_USER:-root}"
12+
password="${MYSQL_ENV_MYSQL_PASSWORD:-$MYSQL_ENV_MYSQL_ROOT_PASSWORD}"
13+
database="${MYSQL_ENV_MYSQL_DATABASE:-${MYSQL_ENV_MYSQL_USER:-redmine}}"
14+
encoding=
15+
elif [ "$POSTGRES_PORT_5432_TCP" ]; then
16+
adapter='postgresql'
17+
host='postgres'
18+
port="${POSTGRES_PORT_5432_TCP_PORT:-5432}"
19+
username="${POSTGRES_ENV_POSTGRES_USER:-postgres}"
20+
password="${POSTGRES_ENV_POSTGRES_PASSWORD}"
21+
database="${POSTGRES_ENV_POSTGRES_DB:-$username}"
22+
encoding=utf8
23+
else
24+
echo >&2 'warning: missing MYSQL_PORT_3306_TCP or POSTGRES_PORT_5432_TCP environment variables'
25+
echo >&2 ' Did you forget to --link some_mysql_container:mysql or some-postgres:postgres?'
26+
echo >&2
27+
echo >&2 '*** Using sqlite3 as fallback. ***'
28+
29+
adapter='sqlite3'
30+
host='localhost'
31+
username='redmine'
32+
database='sqlite/redmine.db'
33+
encoding=utf8
34+
35+
mkdir -p "$(dirname "$database")"
36+
chown -R redmine:redmine "$(dirname "$database")"
37+
fi
38+
39+
cat > './config/database.yml' <<-YML
40+
$RAILS_ENV:
41+
adapter: $adapter
42+
database: $database
43+
host: $host
44+
username: $username
45+
password: "$password"
46+
encoding: $encoding
47+
port: $port
48+
YML
49+
fi
50+
51+
# ensure the right database adapter is active in the Gemfile.lock
52+
bundle install --without development test
53+
54+
if [ ! -s config/secrets.yml ]; then
55+
if [ "$REDMINE_SECRET_KEY_BASE" ]; then
56+
cat > 'config/secrets.yml' <<-YML
57+
$RAILS_ENV:
58+
secret_key_base: "$REDMINE_SECRET_KEY_BASE"
59+
YML
60+
elif [ ! -f /usr/src/redmine/config/initializers/secret_token.rb ]; then
61+
rake generate_secret_token
62+
fi
63+
fi
64+
if [ "$1" != 'rake' -a -z "$REDMINE_NO_DB_MIGRATE" ]; then
65+
gosu redmine rake db:migrate
66+
fi
67+
68+
chown -R redmine:redmine files log public/plugin_assets
69+
70+
# remove PID file to enable restarting the container
71+
rm -f /usr/src/redmine/tmp/pids/server.pid
72+
73+
if [ "$1" = 'passenger' ]; then
74+
# Don't fear the reaper.
75+
set -- tini -- "$@"
76+
fi
77+
78+
set -- gosu redmine "$@"
79+
;;
80+
esac
81+
82+
exec "$@"

3.2/passenger/Dockerfile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
FROM redmine:3.2
2+
3+
ENV PASSENGER_VERSION 5.0.23
4+
RUN buildDeps=' \
5+
make \
6+
' \
7+
&& set -x \
8+
&& apt-get update && apt-get install -y --no-install-recommends $buildDeps && rm -rf /var/lib/apt/lists/* \
9+
&& gem install passenger --version "$PASSENGER_VERSION" \
10+
&& apt-get purge -y --auto-remove $buildDeps
11+
RUN set -x \
12+
&& passenger-config install-agent \
13+
&& passenger-config install-standalone-runtime
14+
15+
CMD ["passenger", "start"]

0 commit comments

Comments
 (0)