| FROM ubuntu:14.04.2 |
| MAINTAINER Andy Bavier <acb@cs.princeton.edu> |
| |
| # XXX Workaround for docker bug: |
| # https://github.com/docker/docker/issues/6345 |
| # Kernel 3.15 breaks docker, uss the line below as a workaround |
| # until there is a fix |
| RUN ln -s -f /bin/true /usr/bin/chfn |
| # XXX End workaround |
| |
| # Install. |
| RUN apt-get update |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y git |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-psycopg2 |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y graphviz graphviz-dev |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y libxslt1.1 libxslt1-dev |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-pip |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tar |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y gcc |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-httplib2 |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y geoip-database libgeoip1 |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y wget |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-dev |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y libyaml-dev |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y pkg-config |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-pycurl |
| |
| RUN pip install django==1.7 |
| RUN pip install djangorestframework==2.4.4 |
| RUN pip install markdown # Markdown support for the browseable API. |
| RUN pip install pyyaml # YAML content-type support. |
| RUN pip install django-filter # Filtering support |
| RUN pip install lxml # XML manipulation library |
| RUN pip install netaddr # IP Addr library |
| RUN pip install pytz |
| RUN pip install django-timezones |
| RUN pip install requests |
| RUN pip install django-crispy-forms |
| RUN pip install django-geoposition |
| RUN pip install django-extensions |
| RUN pip install django-suit |
| RUN pip install django-bitfield |
| RUN pip install django-ipware |
| RUN pip install django-encrypted-fields |
| RUN pip install python-keyczar |
| RUN pip install pygraphviz |
| RUN pip install dnslib |
| |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-keystoneclient |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-novaclient |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-neutronclient |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-glanceclient |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-ceilometerclient |
| |
| RUN pip install django_rest_swagger |
| |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-setuptools |
| RUN easy_install django_evolution |
| RUN easy_install python_gflags |
| RUN easy_install google_api_python_client |
| |
| # Install custom Ansible |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-crypto |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-yaml |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-client |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-paramiko |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-jinja2 |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-httplib2 |
| RUN git clone -b release1.8.2 git://github.com/ansible/ansible.git /opt/ansible |
| RUN git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/lib/ansible/modules/extras |
| RUN git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/v2/ansible/modules/extras |
| RUN git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/lib/ansible/modules/core |
| RUN git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/v2/ansible/modules/core |
| ADD ansible-hosts /etc/ansible/hosts |
| |
| ADD http://code.jquery.com/jquery-1.9.1.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/ |
| |
| # For Observer |
| RUN git clone git://git.planet-lab.org/fofum.git /tmp/fofum |
| RUN cd /tmp/fofum; python setup.py install |
| RUN rm -rf /tmp/fofum |
| |
| RUN mkdir -p /usr/local/share /bin |
| ADD http://phantomjs.googlecode.com/files/phantomjs-1.7.0-linux-x86_64.tar.bz2 /usr/local/share/ |
| RUN tar jxvf /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2 -C /usr/local/share/ |
| RUN rm -f /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2 |
| RUN ln -s /usr/local/share/phantomjs-1.7.0-linux-x86_64 /usr/local/share/phantomjs |
| RUN ln -s /usr/local/share/phantomjs/bin/phantomjs /bin/phantomjs |
| |
| # Supervisor |
| RUN DEBIAN_FRONTEND=noninteractive apt-get install -y supervisor |
| ADD observer.conf /etc/supervisor/conf.d/ |
| |
| # Get XOS |
| ADD xos /opt/xos |
| |
| # Initscript is broken in Ubuntu |
| #ADD observer-initscript /etc/init.d/xosobserver |
| |
| RUN chmod +x /opt/xos/scripts/opencloud |
| RUN /opt/xos/scripts/opencloud genkeys |
| |
| # Workaround for AUFS issue |
| # https://github.com/docker/docker/issues/783#issuecomment-56013588 |
| RUN mkdir /etc/ssl/private-copy; mv /etc/ssl/private/* /etc/ssl/private-copy/; rm -r /etc/ssl/private; mv /etc/ssl/private-copy /etc/ssl/private; chmod -R 0700 /etc/ssl/private; chown -R postgres /etc/ssl/private |
| |
| # Set postgres password to match default value in settings.py |
| RUN service postgresql start; sudo -u postgres psql -c "alter user postgres with password 'password';" |
| |
| # Turn DEBUG on so that devel server will serve static files |
| RUN sed -i 's/DEBUG = False/DEBUG = True/' /opt/xos/xos/settings.py |
| |
| # Cruft to workaround problems with migrations, should go away... |
| RUN /opt/xos/scripts/opencloud remigrate |
| |
| # git clone uses cached copy, doesn't pick up latest |
| RUN git -C /opt/ansible pull |
| RUN git -C /opt/ansible/lib/ansible/modules/core pull |
| RUN git -C /opt/ansible/v2/ansible/modules/core pull |
| |
| EXPOSE 8000 |
| |
| # Set environment variables. |
| ENV HOME /root |
| |
| # Define working directory. |
| WORKDIR /root |
| |
| # Define default command. |
| #CMD ["/bin/bash"] |
| CMD service postgresql start; service supervisor start; cd /opt/xos; PUBLIC_HOSTNAME=`./xos-config.py get server_hostname $HOSTNAME`; python manage.py runserver $PUBLIC_HOSTNAME:8000 |