-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2cf6406
commit 76eba11
Showing
1 changed file
with
39 additions
and
60 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,84 +1,63 @@ | ||
FROM rails | ||
|
||
WORKDIR /usr/src/app | ||
FROM ruby:2.4.1 | ||
|
||
ENV RAILS_ENV=production \ | ||
RUBY_GC_MALLOC_LIMIT=90000000 \ | ||
RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 \ | ||
DISCOURSE_DB_HOST=postgres \ | ||
DISCOURSE_REDIS_HOST=redis \ | ||
DISCOURSE_SERVE_STATIC_ASSETS=true | ||
|
||
ARG GIFSICLE_VERSION=1.87 | ||
ARG PNGQUANT_VERSION=2.4.1 | ||
|
||
RUN curl --silent --location https://deb.nodesource.com/setup_4.x | bash - \ | ||
&& apt-get update && apt-get install -y --no-install-recommends \ | ||
GIFSICLE_VERSION=1.88 \ | ||
PNGQUANT_VERSION=2.8.0 \ | ||
DISCOURSE_VERSION=1.9.0.beta11 \ | ||
BUILD_DEPS="\ | ||
autoconf \ | ||
ghostscript \ | ||
gsfonts \ | ||
imagemagick \ | ||
jhead \ | ||
jpegoptim \ | ||
libbz2-dev \ | ||
pkg-config \ | ||
libfreetype6-dev \ | ||
libjpeg-dev \ | ||
libjpeg-turbo-progs \ | ||
libtiff-dev \ | ||
libtiff-dev" | ||
|
||
|
||
RUN addgroup --gid 1000 discourse \ | ||
&& adduser --system --uid 1000 --ingroup discourse --shell /bin/bash discourse \ | ||
&& cd /home/discourse \ | ||
&& mkdir ./tmp/sockets \ | ||
&& git clone --branch v${DISCOURSE_VERSION} https://github.com/discourse/discourse.git \ | ||
&& chown -r discourse:discourse ./ \ | ||
&& git remote set-branches --add origin tests-passed \ | ||
&& curl --silent --location https://deb.nodesource.com/setup_8.x | bash - \ | ||
&& apt-get update && apt-get install -y --no-install-recommends \ | ||
${BUILD_DEPS} \ | ||
jpegoptim \ | ||
libxml2 \ | ||
nodejs \ | ||
optipng \ | ||
pkg-config \ | ||
ghostscript \ | ||
gsfonts \ | ||
imagemagick \ | ||
&& npm install svgo uglify-js@"<3" -g \ | ||
&& cd /tmp \ | ||
&& curl -O http://www.lcdf.org/gifsicle/gifsicle-$GIFSICLE_VERSION.tar.gz \ | ||
&& tar zxf gifsicle-$GIFSICLE_VERSION.tar.gz \ | ||
&& cd gifsicle-$GIFSICLE_VERSION \ | ||
&& ./configure && make install && cd ..\ | ||
&& wget https://github.com/pornel/pngquant/archive/$PNGQUANT_VERSION.tar.gz \ | ||
&& tar zxf $PNGQUANT_VERSION.tar.gz \ | ||
&& cd pngquant-$PNGQUANT_VERSION \ | ||
&& ./configure && make && make install \ | ||
&& npm install svgo uglify-js -g \ | ||
&& rm -fr /tmp/* \ | ||
&& ./configure && make install \ | ||
&& cd /tmp \ | ||
&& rm gifsicle-$GIFSICLE_VERSION.tar.gz \ | ||
&& rm -rf gifsicle-$GIFSICLE_VERSION \ | ||
&& git clone -b $PNGQUANT_VERSION --single-branch https://github.com/pornel/pngquant \ | ||
&& cd pngquant \ | ||
&& make && make install \ | ||
&& rm -rf pngquant \ | ||
&& cd /home/discourse/discourse \ | ||
&& bundle config build.nokogiri --use-system-libraries \ | ||
&& bundle install --deployment --without test --without development \ | ||
&& apt-get remove -y --purge ${BUILD_DEPS} \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
ARG DISCOURSE_VERSION=1.7.0.beta3 | ||
|
||
RUN git clone --branch v${DISCOURSE_VERSION} https://github.com/discourse/discourse.git . \ | ||
&& git remote set-branches --add origin tests-passed \ | ||
&& bundle config build.nokogiri --use-system-libraries | ||
|
||
# install additional gems | ||
# | ||
# this expects a space-separated list of gem names | ||
ARG DISCOURSE_ADDITIONAL_GEMS= | ||
RUN if [ "$DISCOURSE_ADDITIONAL_GEMS" != "" ]; then \ | ||
echo >> Gemfile ; \ | ||
echo '### DISCOURSE_ADDITIONAL_GEMS' >> Gemfile ; \ | ||
for GEM_NAME in $DISCOURSE_ADDITIONAL_GEMS; do \ | ||
echo "gem \"$GEM_NAME\"" >> Gemfile ; \ | ||
done; \ | ||
fi | ||
WORKDIR /home/discourse/discourse | ||
|
||
# run bundler | ||
# deployment mode if no new gems added, normal mode otherwise | ||
RUN if [ "$DISCOURSE_ADDITIONAL_GEMS" != "" ]; then \ | ||
bundle install --without test --without development; \ | ||
else \ | ||
bundle install --deployment --without test --without development; \ | ||
fi | ||
|
||
# install discourse plugins | ||
# assumptions: no spaces in URLs (urlencoding is a thing) | ||
# | ||
# this expects a git-cloneable link | ||
ARG DISCOURSE_ADDITIONAL_PLUGINS= | ||
RUN if [ "$DISCOURSE_ADDITIONAL_PLUGINS" != "" ]; then \ | ||
cd plugins/; \ | ||
for PACKAGE_LINK in $DISCOURSE_ADDITIONAL_PLUGINS; do \ | ||
git clone "$PACKAGE_LINK"; \ | ||
done; \ | ||
fi | ||
USER discourse | ||
|
||
EXPOSE 3000 | ||
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"] | ||
CMD bundle exec rails server -b 0.0.0.0 |