Better Dockerfile support

This commit is contained in:
Paul Jimenez 2014-05-02 09:35:21 -04:00
parent 80bf60715e
commit 5ceec760b9
3 changed files with 75 additions and 24 deletions

View File

@ -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:<version-based-on-14.04>
# 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

View File

@ -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 <<EORUN >/etc/service/nsd/run
#!/bin/sh
exec /usr/bin/nsd -d
EORUN
cat <<EORUN >/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 <<EORUN >/etc/service/dovecot/run
#!/bin/sh
exec dovecot
EORUN
cat <<EORUN >/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 <<EORUN >/etc/service/nginx/run
#!/bin/sh
exec nginx
EORUN
cat <<EORUN >/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."

View File

@ -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