Mercurial > sat_docs
view docker/libervia/Dockerfile @ 103:e69883c1ec30
docker (libervia_cont): added a "status" command:
- if libervia container is not running, it exits with error code 1
- if libervia container is running but no server is launched, it exits with error code 2
- if libervia container is running and server is launcher, it exits with error code 0 (success)
server detection is done by doing a simple grep on logs, that's not perfectly reliable (ports can be changed in configuration, even if that doesn't really make sense in Docker context) but should be good enough for this purpose.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 27 Feb 2016 00:45:40 +0100 |
parents | bcba1966e6db |
children | b69056368901 |
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> ############## # txJSON-RPC # ############## RUN pip install txJSON-RPC ########### # PYJAMAS # ########### WORKDIR /usr/share # as the situation with pyjamas is complicated, we get the archive from our own ftp RUN 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()' WORKDIR pyjamas RUN python bootstrap.py RUN ln -s /usr/share/pyjamas/bin/pyjsbuild /usr/local/bin/pyjsbuild ############ # LIBERVIA # ############ WORKDIR /tmp RUN apt-get install -y --no-install-recommends python-jinja2 RUN hg clone https://repos.goffi.org/libervia WORKDIR libervia RUN python setup.py install WORKDIR /tmp RUN rm -rf libervia ################# # CONFIGURATION # ################# # we want to use certificates in /usr/share/sat/certificates RUN 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 ##################### # FIRST LAUNCH TEST # ##################### # this script check if libervia and admin accounts exist, and create them if necessary # then it launch libervia RUN echo '#!/usr/bin/env python2\n\ import os, sys, subprocess, string, random\n\ from sat.plugins import plugin_misc_account as account\n\ from sat.tools import config\n\ from sat_frontends.bridge import DBus\n\ def generate_pwd():\n\ chars = string.letters + string.digits\n\ length = 12\n\ return "".join(random.choice(chars) for _ in range(length))\n\ sat=DBus.DBusBridgeFrontend()\n\ sat.getReady()\n\ admin_email = sat.getConfig(account.CONFIG_SECTION, "admin_email") or account.default_conf["admin_email"]\n\ for profile in ["libervia", "admin"]:\n\ try:\n\ sat.getProfileName(profile)\n\ except Exception as e:\n\ print "{} profile doesn'\''t exists, creating it".format(profile)\n\ print "registering {}@{}".format(profile, sat.getNewAccountDomain())\n\ pwd = generate_pwd()\n\ if profile == "libervia":\n\ config.fixConfigOption("libervia", "passphrase", pwd)\n\ elif profile == "admin":\n\ with open("/home/sat/ADMIN_PWD", "w") as f:\n\ f.write("%s\\n" % pwd)\n\ sat.registerSatAccount(admin_email, pwd, profile)\n\ os.execvp("libervia", ["libervia"] + sys.argv[1:])\n\ ' > /usr/bin/libervia_cont_launch && chmod 555 /usr/bin/libervia_cont_launch ######### # D-Bus # ######### RUN cp /usr/local/bin/dbus_wrap /usr/local/bin/libervia_cont_launch && chmod 555 /usr/local/bin/libervia_cont_launch ######### # Ports # ######### # HTTP EXPOSE 8080 # HTTPS EXPOSE 8443 ########## # LAUNCH # ########## USER sat ENTRYPOINT ["libervia_cont_launch", "fg"]