From 5ceec760b9b4fa97d883cd79cf46dc32cfac5070 Mon Sep 17 00:00:00 2001 From: Paul Jimenez Date: Fri, 2 May 2014 09:35:21 -0400 Subject: [PATCH] Better Dockerfile support --- containers/docker/Dockerfile | 29 +++++++++------ containers/docker/setup_services.sh | 58 +++++++++++++++++++++++++++++ containers/docker/start_services.sh | 12 ------ 3 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 containers/docker/setup_services.sh delete mode 100644 containers/docker/start_services.sh diff --git a/containers/docker/Dockerfile b/containers/docker/Dockerfile index 80cb2a4c..8c04c4f9 100644 --- a/containers/docker/Dockerfile +++ b/containers/docker/Dockerfile @@ -6,7 +6,11 @@ # sudo docker.io build -t box . # sudo docker.io run -i -t box -FROM ubuntu:14.04 +# Revert to phusion's baseimage once they upgrade to Ubuntu 14.04 +#FROM phusion/baseimage: +# For now use an upgraded image provided by pjz, based on his +# a PR: https://github.com/phusion/baseimage-docker/pull/64 +FROM pjzz/phusion-baseimage:0.9.10 MAINTAINER Joshua Tauberer (http://razor.occams.info) ENV PUBLIC_HOSTNAME box.local @@ -16,19 +20,20 @@ ENV PUBLIC_HOSTNAME box.local # host forward its port 53 (TCP/UDP) traffic to the docker container. # Since we can't get the host's IP address here, we'll set this to # a dummy value. -ENV PUBLIC_IP 127.0.123.123 +ENV PUBLIC_IP 127.0.122.123 -# Our install will fail if SSH is installed and allows password-based authentication. -RUN apt-get install -q -y openssh-server -RUN sed -i /etc/ssh/sshd_config -e "s/^#PasswordAuthentication yes/PasswordAuthentication no/g" -RUN service ssh restart +# Turn off password-based authentication; for ssh access see the phusion-baseimage docs +RUN sed -i 's/^#\s*\(PasswordAuthentication no\)/\1/' /etc/ssh/sshd_config -# Start our setup. -RUN apt-get install -q -y git +# install some tools to install mailinabox +RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -q -y git ca-certificates wget && apt-get clean + +# actually install mailinabox RUN git clone https://github.com/joshdata/mailinabox -RUN cd mailinabox; scripts/start.sh +RUN cd mailinabox && scripts/start.sh + +# configure mailinabox services +ADD setup_services.sh /usr/local/bin/setup_services.sh +RUN bash /usr/local/bin/setup_services.sh -# Launch configuration. -ADD start_services.sh /usr/local/bin/start_services.sh -CMD bash /usr/local/bin/start_services.sh EXPOSE 22 25 53 443 587 993 diff --git a/containers/docker/setup_services.sh b/containers/docker/setup_services.sh new file mode 100644 index 00000000..eb8a6ec5 --- /dev/null +++ b/containers/docker/setup_services.sh @@ -0,0 +1,58 @@ +#!/bin/bash +echo "Setting up Mail-in-a-Box services..." + +SERVICES="nsd postfix dovecot opendkim nginx php-fastcgi" + +for service in $SERVICES; do + mkdir -p /etc/service/$service +done + +cat </etc/service/nsd/run +#!/bin/sh +exec /usr/bin/nsd -d +EORUN + +cat </etc/service/postfix/run +#!/bin/sh +# from http://smarden.org/runit/runscripts.html#postfix +exec 1>&2 + +daemon_directory=/usr/lib/postfix \ + command_directory=/usr/sbin \ + config_directory=/etc/postfix \ + queue_directory=/var/spool/postfix \ + mail_owner=postfix \ + setgid_group=postdrop \ + /etc/postfix/postfix-script check || exit 1 + +exec /usr/lib/postfix/master +EORUN + +cat </etc/service/dovecot/run +#!/bin/sh +exec dovecot +EORUN + +cat </etc/service/opendkim/run +#!/bin/sh +exec opendkim -f -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid +EORUN + +echo "daemon off;" >> /etc/nginx/nginx.conf +cat </etc/service/nginx/run +#!/bin/sh +exec nginx +EORUN + +cat </etc/service/php-fastcgi/run +#!/bin/bash +export PHP_FCGI_CHILDREN=4 PHP_FCGI_MAX_REQUESTS=1000 +exec /usr/bin/php-cgi -q -b /tmp/php-fastcgi.www-data.sock -c /etc/php5/cgi/php.ini +EORUN + +for service in $SERVICES; do + chmod a+x /etc/service/$service/run +done + +echo "Your Mail-in-a-Box services are configured." + diff --git a/containers/docker/start_services.sh b/containers/docker/start_services.sh deleted file mode 100644 index 137b9c8e..00000000 --- a/containers/docker/start_services.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -echo "Starting Mail-in-a-Box services..." - -service nsd start -service postfix start -dovecot # it's integration with Upstart doesn't work in docker -service opendkim start -service nginx start -service php-fastcgi start - -echo "Your Mail-in-a-Box is running." -bash