Mercurial > sat_docs
view docker/prosody/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 | 30f3f83d6959 |
children | 470dafe3f5b6 |
line wrap: on
line source
############################################################### # # # Salut à Toi/Prosody # # This Dockerfile build a Prosody version prepared for SàT # # Salut à Toi is a multi-frontends multi-purposes XMPP client # # # ############################################################### FROM salutatoi/sat_pubsub:latest MAINTAINER Goffi <goffi@goffi.org> ############################ # AUTOMATIC CONFIGURATION # ############################ COPY scripts/container_server scripts/prosody /usr/local/bin/ RUN chown root:root /usr/local/bin/container_server && \ chmod 0555 /usr/local/bin/container_server && \ chown root:root /usr/local/bin/prosody && \ chmod 0555 /usr/local/bin/prosody ######## # BASE # ######## RUN apt-get install -y --no-install-recommends lsb-release && \ # we add prosody repository and key echo deb http://packages.prosody.im/debian $(lsb_release -sc) main > /etc/apt/sources.list.d/prosody.list && \ python -c 'import urllib2;import subprocess as s;s.Popen(["apt-key","add","-"], stdin=s.PIPE).communicate(urllib2.urlopen("https://prosody.im/files/prosody-debian-packages.key").read())' && \ apt-get update && \ # and install prosody and apg (to generate passwords) apt-get install -y apg prosody-0.10 && \ apt-get clean && \ # prosody user need to access (and write) certificates adduser prosody tls-cert && \ # prosody need to access /var/run to write it's pid mkdir -p /var/run/prosody; chown prosody:adm /var/run/prosody ################### # PROSODY MODULES # ################### RUN cd /tmp && \ hg clone https://hg.prosody.im/prosody-modules/ prosody-modules && \ cd prosody-modules && \ for mod in privilege delegation ipcheck http_upload;do cp mod_$mod/mod_$mod.lua /usr/lib/prosody/modules;done && \ cd /tmp && rm -rf prosody-modules ################# # CONFIGURATION # ################# ADD prosody.cfg.lua /etc/prosody/prosody_sat_cfg/ RUN cd /etc/prosody && chown -R prosody:prosody prosody_sat_cfg && \ ln -fs prosody_sat_cfg/prosody.cfg.lua prosody.cfg.lua && \ ############### # CERTIFICATE # ############### # We want to use the certificates in /usr/share/sat/certificates # and we don't want any certificate in the image, # they'll be generated at launch or mounted in container rm -rf /etc/localhost.key /etc/prosody/certs/* ######### # PORTS # ######### # client to server (C2S), # server to server (S2S), # HTTP upload, # and HTTP upload (HTTPS) EXPOSE 5222 5269 5280 5281 ########## # LAUNCH # ########## USER prosody ENTRYPOINT ["prosody"]