From 78a259063171e99f24700d080bf9fedaa65884fb Mon Sep 17 00:00:00 2001 From: Jake Moshenko Date: Thu, 17 Jul 2014 23:17:43 -0400 Subject: [PATCH] Simplify the dockerfiles using a dockerignore. --- .dockerignore | 11 +++++++ Dockerfile.buildworker | 41 ++++++++--------------- Dockerfile.web | 74 +++++++++++------------------------------- 3 files changed, 43 insertions(+), 83 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..fcc890f76 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +conf/stack +screenshots +test/data/registry +venv +.git +.gitignore +Bobfile +README.md +license.py +requirements-nover.txt +run-local.sh diff --git a/Dockerfile.buildworker b/Dockerfile.buildworker index 8f3232870..f3ea2a4d5 100644 --- a/Dockerfile.buildworker +++ b/Dockerfile.buildworker @@ -1,45 +1,30 @@ -FROM phusion/baseimage:0.9.10 +FROM phusion/baseimage:0.9.11 ENV DEBIAN_FRONTEND noninteractive ENV HOME /root +WORKDIR / -RUN apt-get update # 20JUN2014 -RUN apt-get install -y git python-virtualenv python-dev libjpeg8 libjpeg62-dev libevent-dev gdebi-core g++ libmagic1 +# Install the dependencies. +RUN apt-get update # 15JUL2014 + +# 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 phantomjs nodejs npm libldap2-dev libsasl2-dev + +# Build the python dependencies +ADD requirements.txt requirements.txt +RUN virtualenv --distribute venv +RUN venv/bin/pip install -r requirements.txt ### End common section ### -RUN apt-get install -y libldap2-dev libsasl2-dev - RUN apt-get install -y lxc aufs-tools RUN usermod -v 100000-200000 -w 100000-200000 root ADD binary_dependencies/builder binary_dependencies/builder - RUN gdebi --n binary_dependencies/builder/*.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 buildstatus buildstatus -ADD data data -ADD features features -ADD storage storage -ADD util util -ADD workers workers - -ADD app.py app.py -ADD config.py config.py -ADD license.pyc license.pyc - -# Remove this if we ever stop depending on test data for the default config -ADD test test - -ADD conf conf -RUN rm -rf /conf/stack +ADD . . ADD conf/init/svlogd_config /svlogd_config ADD conf/init/preplogsdir.sh /etc/my_init.d/ diff --git a/Dockerfile.web b/Dockerfile.web index dd0975bb4..4d1cda7af 100644 --- a/Dockerfile.web +++ b/Dockerfile.web @@ -1,67 +1,35 @@ -FROM phusion/baseimage:0.9.10 +FROM phusion/baseimage:0.9.11 ENV DEBIAN_FRONTEND noninteractive ENV HOME /root +WORKDIR / # Install the dependencies. -RUN apt-get update # 20JUN2014 +RUN apt-get update # 15JUL2014 # 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 - -# PhantomJS -RUN apt-get install -y phantomjs - -# Grunt -RUN apt-get install -y nodejs npm -RUN ln -s /usr/bin/nodejs /usr/bin/node -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/* +RUN apt-get install -y git python-virtualenv python-dev libjpeg8 libjpeg62-dev libevent-dev gdebi-core g++ libmagic1 phantomjs nodejs npm libldap2-dev libsasl2-dev +# Build the python dependencies 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 +# Install the binary dependencies +ADD binary_dependencies binary_dependencies +RUN gdebi --n binary_dependencies/*.deb + +# Grunt +RUN ln -s /usr/bin/nodejs /usr/bin/node +RUN npm install -g grunt-cli + +# Add all of the files! +ADD . . + +# Run grunt 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 license.pyc license.pyc -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 - -# This command must be rm -f (not -rf) to fail in case stack is ever a dir, -# which may contain secrets -RUN rm -f /conf/stack - ADD conf/init/svlogd_config /svlogd_config ADD conf/init/preplogsdir.sh /etc/my_init.d/ ADD conf/init/runmigration.sh /etc/my_init.d/ @@ -72,16 +40,12 @@ ADD conf/init/diffsworker /etc/service/diffsworker ADD conf/init/webhookworker /etc/service/webhookworker # Download any external libs. -RUN mkdir static/fonts -RUN mkdir static/ldn - +RUN mkdir static/fonts 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 the tests RUN TEST=true venv/bin/python -m unittest discover -RUN rm -rf /conf/stack VOLUME ["/conf/stack", "/var/log", "/datastorage"] EXPOSE 443 80