blob: dafc5d955a707764545bdcdd046c53fc7ae87807 [file] [log] [blame]
S.Çağlar Onur89d0ce72015-02-23 11:11:12 -05001FROM ubuntu:14.04.2
Andy Bavier37044342015-02-06 16:39:06 -05002MAINTAINER Andy Bavier <acb@cs.princeton.edu>
3
Tony Mack4faa5f92015-02-10 16:47:12 -05004# XXX Workaround for docker bug:
5# https://github.com/docker/docker/issues/6345
6# Kernel 3.15 breaks docker, uss the line below as a workaround
7# until there is a fix
8RUN ln -s -f /bin/true /usr/bin/chfn
9# XXX End workaround
10
Andy Bavier37044342015-02-06 16:39:06 -050011# Install.
12RUN apt-get update
Andy Bavier4578ae72015-02-10 16:37:33 -050013RUN DEBIAN_FRONTEND=noninteractive apt-get install -y git
14RUN DEBIAN_FRONTEND=noninteractive apt-get install -y postgresql
15RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-psycopg2
16RUN DEBIAN_FRONTEND=noninteractive apt-get install -y graphviz graphviz-dev
17RUN DEBIAN_FRONTEND=noninteractive apt-get install -y libxslt1.1 libxslt1-dev
18RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-pip
19RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tar
20RUN DEBIAN_FRONTEND=noninteractive apt-get install -y gcc
21RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-httplib2
22RUN DEBIAN_FRONTEND=noninteractive apt-get install -y geoip-database libgeoip1
23RUN DEBIAN_FRONTEND=noninteractive apt-get install -y wget
24RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-dev
25RUN DEBIAN_FRONTEND=noninteractive apt-get install -y libyaml-dev
Scott Baker8251e7b2015-04-27 17:06:51 -070026RUN DEBIAN_FRONTEND=noninteractive apt-get install -y pkg-config
Andy Bavier37044342015-02-06 16:39:06 -050027
28RUN pip install django==1.7
29RUN pip install djangorestframework==2.4.4
30RUN pip install markdown # Markdown support for the browseable API.
31RUN pip install pyyaml # YAML content-type support.
32RUN pip install django-filter # Filtering support
33RUN pip install lxml # XML manipulation library
34RUN pip install netaddr # IP Addr library
35RUN pip install pytz
36RUN pip install django-timezones
37RUN pip install requests
38RUN pip install django-crispy-forms
39RUN pip install django-geoposition
40RUN pip install django-extensions
41RUN pip install django-suit
Andy Bavier37044342015-02-06 16:39:06 -050042RUN pip install django-bitfield
43RUN pip install django-ipware
44RUN pip install django-encrypted-fields
45RUN pip install python-keyczar
Scott Baker8251e7b2015-04-27 17:06:51 -070046RUN pip install pygraphviz
Andy Bavier37044342015-02-06 16:39:06 -050047
Andy Bavier4578ae72015-02-10 16:37:33 -050048RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-keystoneclient
49RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-novaclient
50RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-neutronclient
51RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-glanceclient
52RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-ceilometerclient
Andy Bavier37044342015-02-06 16:39:06 -050053
54RUN pip install django_rest_swagger
55
Andy Bavier4578ae72015-02-10 16:37:33 -050056RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-setuptools
Andy Bavier37044342015-02-06 16:39:06 -050057RUN easy_install django_evolution
58RUN easy_install python_gflags
59RUN easy_install google_api_python_client
60
Andy Baviercabca602015-02-11 17:07:36 -050061# Install custom Ansible
62RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-crypto
63RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-yaml
64RUN DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-client
65RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-paramiko
66RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-jinja2
67RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python-httplib2
68RUN git clone -b release1.8.2 git://github.com/ansible/ansible.git /opt/ansible
69RUN git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/lib/ansible/modules/extras
70RUN git clone -b release1.8.2 git://github.com/ansible/ansible-modules-extras.git /opt/ansible/v2/ansible/modules/extras
71RUN git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/lib/ansible/modules/core
72RUN git clone git://github.com/sb98052/ansible-modules-core.git /opt/ansible/v2/ansible/modules/core
Andy Bavier37044342015-02-06 16:39:06 -050073ADD ansible-hosts /etc/ansible/hosts
74
75ADD http://code.jquery.com/jquery-1.9.1.min.js /usr/local/lib/python2.7/dist-packages/suit/static/suit/js/
76
Andy Bavierea979652015-02-10 14:01:07 -050077# For Observer
78RUN git clone git://git.planet-lab.org/fofum.git /tmp/fofum
79RUN cd /tmp/fofum; python setup.py install
S.Çağlar Onur89d0ce72015-02-23 11:11:12 -050080RUN rm -rf /tmp/fofum
Andy Bavierea979652015-02-10 14:01:07 -050081
S.Çağlar Onurd30d6352015-02-12 11:55:19 -050082RUN mkdir -p /usr/local/share /bin
83ADD http://phantomjs.googlecode.com/files/phantomjs-1.7.0-linux-x86_64.tar.bz2 /usr/local/share/
S.Çağlar Onurafb88a52015-02-12 12:02:10 -050084RUN tar jxvf /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2 -C /usr/local/share/
S.Çağlar Onurd30d6352015-02-12 11:55:19 -050085RUN rm -f /usr/local/share/phantomjs-1.7.0-linux-x86_64.tar.bz2
86RUN ln -s /usr/local/share/phantomjs-1.7.0-linux-x86_64 /usr/local/share/phantomjs
87RUN ln -s /usr/local/share/phantomjs/bin/phantomjs /bin/phantomjs
88
Andy Bavier6d23fcb2015-04-24 10:52:27 -040089# Supervisor
90RUN DEBIAN_FRONTEND=noninteractive apt-get install -y supervisor
91ADD observer.conf /etc/supervisor/conf.d/
92
Andy Bavier37044342015-02-06 16:39:06 -050093# Get XOS
Scott Baker29397412015-02-18 22:30:22 -080094ADD xos /opt/xos
Andy Bavier37044342015-02-06 16:39:06 -050095
Scott Baker1c36afb2015-02-19 13:33:58 -080096# Initscript is broken in Ubuntu
97#ADD observer-initscript /etc/init.d/xosobserver
Andy Bavier37044342015-02-06 16:39:06 -050098
99RUN chmod +x /opt/xos/scripts/opencloud
100RUN /opt/xos/scripts/opencloud genkeys
101
Andy Bavierdfcc6e02015-03-13 14:01:47 -0400102# Workaround for AUFS issue
103# https://github.com/docker/docker/issues/783#issuecomment-56013588
104RUN 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
105
Andy Bavier37044342015-02-06 16:39:06 -0500106# Set postgres password to match default value in settings.py
107RUN service postgresql start; sudo -u postgres psql -c "alter user postgres with password 'password';"
108
109# Turn DEBUG on so that devel server will serve static files
S.Çağlar Onur29c1f632015-02-12 11:42:20 -0500110RUN sed -i 's/DEBUG = False/DEBUG = True/' /opt/xos/xos/settings.py
Andy Bavier37044342015-02-06 16:39:06 -0500111
112# Cruft to workaround problems with migrations, should go away...
Scott Baker6ada9252015-02-18 16:50:48 -0800113RUN /opt/xos/scripts/opencloud remigrate
Andy Bavier37044342015-02-06 16:39:06 -0500114
Andy Bavier6d23fcb2015-04-24 10:52:27 -0400115# git clone uses cached copy, doesn't pick up latest
116RUN git -C /opt/ansible pull
117
Andy Bavier37044342015-02-06 16:39:06 -0500118EXPOSE 8000
119
120# Set environment variables.
121ENV HOME /root
122
123# Define working directory.
124WORKDIR /root
125
126# Define default command.
Andy Bavierc3f91702015-03-13 14:52:52 -0400127#CMD ["/bin/bash"]
Andy Bavier6d23fcb2015-04-24 10:52:27 -0400128CMD 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