Optimise the Dockerfile for Docker Hub Automated Builds.

Installs ca-certificates, required for the "release message" feature.
With the current [mailhog/mailhog](https://hub.docker.com/r/mailhog/mailhog/)
docker image, releasing messages to an SMTP server via TLS fails:
> Failed to release message: x509: failed to load system roots and no roots
> provided

Removes any build dependencies after install, optimising docker image size.
The image size is about the same as the Rocker based build, but works with plain
Docker and can therefore be used via Docker Hub Automated Builds.

Runs with a non-privileged user account instead of as root, increasing security.
Assigning the user ID 1000 allows host volume mounts (e.g. for maildir storage)
to work seamlessly with docker-machine.

Installs MailHog in `/usr/local/bin`, which is in the system `PATH` and allows
to use a simplified entrypoint (`MailHog`).
This commit is contained in:
Sebastian Tschan 2016-10-23 12:42:22 +02:00
parent d6585029d6
commit 12eb3dfb7d
2 changed files with 32 additions and 4 deletions

1
.dockerignore Normal file
View file

@ -0,0 +1 @@
*

View file

@ -1,7 +1,34 @@
FROM golang:1.4
#
# MailHog Dockerfile
#
RUN go get github.com/mailhog/MailHog
FROM alpine:3.4
# Install ca-certificates, required for the "release message" feature:
RUN apk --no-cache add \
ca-certificates
# Install MailHog:
RUN apk --no-cache add --virtual build-dependencies \
go \
git \
&& mkdir -p /root/gocode \
&& export GOPATH=/root/gocode \
&& go get github.com/mailhog/MailHog \
&& mv /root/gocode/bin/MailHog /usr/local/bin \
&& rm -rf /root/gocode \
&& apk del --purge build-dependencies
# Add mailhog user/group with uid/gid 1000.
# This is a workaround for boot2docker issue #581, see
# https://github.com/boot2docker/boot2docker/issues/581
RUN adduser -D -u 1000 mailhog
USER mailhog
WORKDIR /home/mailhog
ENTRYPOINT ["MailHog"]
# Expose the SMTP and HTTP ports:
EXPOSE 1025 8025
ENTRYPOINT ["/go/bin/MailHog"]