view docker/libervia/Dockerfile @ 105:b69056368901

docker: images optimisation: - reduced the number of layers by grouping many instructions - moved stuff which don't change a lot at the beginning, and hg/apt at the end - scripts are not now in scripts/ subdirectories - prosody.cfg.lua is added using ADD instead of getting it online - .hg/dirstate is copied in base (backend) and libervia, so mercurial revision is known - removed lot of useless WORKDIR instruction, they are replaced by "cd" inside RUN instructions - cleaning (apt-clean, rm) is done on the same instruction as the one than generate the data, to avoid useless data in layers
author Goffi <goffi@goffi.org>
date Sun, 28 Feb 2016 02:01:20 +0100
parents bcba1966e6db
children 8b228fd053bc
line wrap: on
line source

####################################################################
#                                                                  #
#                       Salut à Toi/Libervia                       #
# This Dockerfile build Libervia, the web frontend for Salut à Toi #
#   Salut à Toi is a multi-frontends multi-purposes XMPP client    #
#                                                                  #
####################################################################

FROM salutatoi/media:latest

MAINTAINER Goffi <goffi@goffi.org>

#####################
# FIRST LAUNCH TEST #
#####################

COPY scripts/libervia_cont_launch /usr/bin/

RUN chown root:root /usr/bin/libervia_cont_launch && \
chmod 0555 /usr/bin/libervia_cont_launch && \

#########
# D-Bus #
#########

cp /usr/local/bin/dbus_wrap /usr/local/bin/libervia_cont_launch && \

#################
# CONFIGURATION #
#################

# we want to use certificates in /usr/share/sat/certificates
echo "\n[libervia]\n\
tls_private_key = /usr/share/sat/certificates/libervia.key\n\
tls_certificate = /usr/share/sat/certificates/libervia.crt\n\
connection_type = both\n\
redirect_to_https = 0" >> /etc/sat.conf

################
# dependencies #
################

RUN pip install txJSON-RPC && \

apt-get install -y --no-install-recommends python-jinja2 && apt-get clean && \

###########
# PYJAMAS #
###########

cd /tmp && \

# as the situation with pyjamas is complicated, we get the archive from our own ftp
python -c 'import urllib2,tarfile,cStringIO;tar=tarfile.open(fileobj=cStringIO.StringIO(urllib2.urlopen("https://ftp.goffi.org/pyjamas/pyjamas.tar.bz2").read()));tar.extractall()' && \

cd pyjamas && \

python bootstrap.py && \

ln -s /tmp/pyjamas/bin/pyjsbuild /usr/local/bin/pyjsbuild && \

############
# LIBERVIA #
############

hg clone https://repos.goffi.org/libervia && \

cd libervia && \

python setup.py install && \

# as for SàT backend, we copy .hg/dirstate so
# Libervia can get repository version
# TODO: should be done in setup.py in the future
cp --parents .hg/dirstate /usr/local/lib/python2.7/dist-packages/libervia && \

# some cleaning before finishing the layer
cd /tmp && rm -rf libervia pyjamas /usr/local/bin/pyjsbuild

#########
# Ports #
#########

# HTTP and HTTPS
EXPOSE 8080 8443

##########
# LAUNCH #
##########

USER sat

ENTRYPOINT ["libervia_cont_launch", "fg"]