From 12eb3dfb7d5dbcc3fc0d6574773d932375d8e023 Mon Sep 17 00:00:00 2001 From: Sebastian Tschan Date: Sun, 23 Oct 2016 12:42:22 +0200 Subject: [PATCH] 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`). --- .dockerignore | 1 + Dockerfile | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +* diff --git a/Dockerfile b/Dockerfile index 2e56629..6f5cf01 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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"]