Skip to content
Dockerfile 2.53 KiB
Newer Older
Pierre Ozoux's avatar
Pierre Ozoux committed
FROM rails
Pierre Ozoux's avatar
Pierre Ozoux committed

WORKDIR /usr/src/app

Pierre Ozoux's avatar
Pierre Ozoux committed
    RUBY_GC_MALLOC_LIMIT=90000000 \
Pierre Ozoux's avatar
Pierre Ozoux committed
    RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 \
Pierre Ozoux's avatar
Pierre Ozoux committed
    DISCOURSE_DB_HOST=postgres \
    DISCOURSE_REDIS_HOST=redis \
ARG GIFSICLE_VERSION=1.87
ARG PNGQUANT_VERSION=2.4.1

Pierre Ozoux's avatar
Pierre Ozoux committed
RUN curl --silent --location https://deb.nodesource.com/setup_4.x | bash - \
 && apt-get update && apt-get install -y --no-install-recommends \
      autoconf \
      ghostscript \
      gsfonts \
      imagemagick \
      jhead \
      jpegoptim \
      libbz2-dev \
      libfreetype6-dev \
      libjpeg-dev \
      libjpeg-turbo-progs \
      libtiff-dev \
      libxml2 \
      nodejs \
      optipng \
      pkg-config \
 && 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/* \
Pierre Ozoux's avatar
Pierre Ozoux committed
 && rm -rf /var/lib/apt/lists/*

RUN git clone --branch v${DISCOURSE_VERSION} https://github.com/discourse/discourse.git . \
 && git remote set-branches --add origin tests-passed \
# 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 ; \
# 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 \
Michał 'rysiek' Woźniak's avatar
Michał 'rysiek' Woźniak committed
        cd plugins/; \
        for PACKAGE_LINK in $DISCOURSE_ADDITIONAL_PLUGINS; do \
            git clone "$PACKAGE_LINK"; \
        done; \
    fi
Pierre Ozoux's avatar
Pierre Ozoux committed

EXPOSE 3000
Pierre Ozoux's avatar
Pierre Ozoux committed
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]