FROM phusion/baseimage:0.9.9 ENV DEBIAN_FRONTEND noninteractive ENV HOME /root # Needed for this fix: http://stackoverflow.com/a/21715730 RUN apt-get update RUN apt-get install -y software-properties-common python-software-properties RUN add-apt-repository ppa:chris-lea/node.js # Install the dependencies. RUN apt-get update # New ubuntu packages should be added as their own apt-get install lines below the existing install commands RUN apt-get install -y git python-virtualenv python-dev libjpeg8 libjpeg62-dev libevent-dev gdebi-core g++ libmagic1 libssl1.0.0 # PhantomJS RUN apt-get install -y libfreetype6 libfreetype6-dev fontconfig ADD https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2 phantomjs.tar.bz2 RUN tar xjf phantomjs.tar.bz2 && ln -s `pwd`/phantomjs*/bin/phantomjs /usr/bin/phantomjs # Grunt RUN apt-get install -y nodejs RUN npm install -g grunt-cli # LDAP RUN apt-get install -y libldap2-dev libsasl2-dev ADD binary_dependencies binary_dependencies RUN gdebi --n binary_dependencies/*.deb RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ADD requirements.txt requirements.txt RUN virtualenv --distribute venv RUN venv/bin/pip install -r requirements.txt # Add the static assets and run grunt ADD grunt grunt ADD static static RUN cd grunt && npm install RUN cd grunt && grunt # Add the backend assets ADD auth auth ADD buildstatus buildstatus ADD data data ADD endpoints endpoints ADD features features ADD screenshots screenshots ADD storage storage ADD templates templates ADD util util ADD workers workers ADD app.py app.py ADD application.py application.py ADD config.py config.py ADD initdb.py initdb.py ADD external_libraries.py external_libraries.py ADD alembic.ini alembic.ini # Add the config ADD conf conf RUN rm -rf /conf/stack ADD conf/init/mklogsdir.sh /etc/my_init.d/ ADD conf/init/runmigration.sh /etc/my_init.d/ ADD conf/init/gunicorn.sh /etc/service/gunicorn/run ADD conf/init/nginx.sh /etc/service/nginx/run ADD conf/init/diffsworker.sh /etc/service/diffsworker/run ADD conf/init/webhookworker.sh /etc/service/webhookworker/run # Download any external libs. RUN mkdir static/fonts RUN mkdir static/ldn RUN venv/bin/python -m external_libraries # Add the tests last because they're prone to accidental changes, then run them ADD test test RUN TEST=true venv/bin/python -m unittest discover VOLUME ["/conf/stack", "/mnt/logs"] EXPOSE 443 80 CMD ["/sbin/my_init"]