add jemalloc, shuffle stuff around
[discourse_docker.git] / image / Dockerfile
index a4995d19a49569831e8b986f7f80d5e12504fe55..9c416f539e541647eb46e2b29df4aed8a400dfa6 100644 (file)
@@ -20,31 +20,42 @@ RUN apt-get -y update &&\
                     pngcrush imagemagick \
                     postgresql-9.2 postgresql-client-9.2 \
                     postgresql-contrib-9.2 libpq-dev libreadline-dev \
-                    nginx wget language-pack-en sudo &&\
+                    nginx wget language-pack-en sudo cron \
+                    psmisc &&\
     dpkg-divert --local --rename --add /sbin/initctl &&\
     ln -s /bin/true /sbin/initctl &&\
-    apt-get install -y redis-server &&\
-    apt-get install -y haproxy openssh-server &&\
+    apt-get install -y redis-server haproxy openssh-server &&\
+    echo 'gem: --no-document' >> /etc/gemrc &&\
     mkdir /src && cd /src &&\
-    git clone https://github.com/sstephenson/ruby-build.git &&\
-    cd ruby-build && \
-    /src/ruby-build/install.sh &&\
-    cd / &&\
+     git clone https://github.com/sstephenson/ruby-build.git && cd / &&\
+    cd /src/ruby-build &&\
+     ./install.sh && cd / &&\
     rm -rf /src/ruby-build &&\
     ruby-build 2.0.0-p247 /usr/local &&\
     gem update --system &&\
-    gem install bundler &&\
-    useradd discourse &&\
-    mkdir /var/www &&\
-    cd /var/www &&\
-    git clone https://github.com/discourse/discourse.git &&\
-    chown -R discourse /var/www/discourse &&\
+    gem install bundler --pre &&\
+    cd / && git clone https://github.com/SamSaffron/pups.git
+
+RUN mkdir /jemalloc && cd /jemalloc && wget http://www.canonware.com/download/jemalloc/jemalloc-3.4.1.tar.bz2 &&\
+      tar -xvjf jemalloc-3.4.1.tar.bz2 && cd jemalloc-3.4.1 && ./configure && make &&\
+      mv lib/libjemalloc.so.1 /usr/lib && cd / $$ rm -rf /jemalloc &&\
+      apt-get install -y runit && apt-get clean && locale-gen en_US
+
+# Discourse specific bits
+RUN useradd discourse -s /bin/bash -m -U &&\
+    mkdir /var/www && cd /var/www &&\
+     git clone --depth 1 https://github.com/discourse/discourse.git &&\
+     chown -R discourse:discourse /var/www/discourse && cd / &&\
     cd /var/www/discourse &&\
-    sudo -u discourse RAILS4=1 bundle install --deployment &&\
-    apt-get install -y runit &&\
-    locale-gen en_US
+     sudo -u discourse RAILS4=1 bundle install -j4 --deployment \
+         --without test --without development &&\
+    cd /var/www/discourse/vendor/bundle &&\
+       find . -name tmp -type d | xargs rm -rf && cd /
+
 
-RUN cd / && git clone https://github.com/SamSaffron/pups.git
+# For a smaller but less flexible image:
+#RUN apt-get -y autoremove build-essential gcc gcc-4.7 .+-dev
+#RUN echo image size: $(du -hsx /)
 
 # RUN cd /var/www/discourse && bundle exec rake db:test:prepare && bundle exec rspec