diff --git a/Dockerfile b/Dockerfile index 739a2c7..9a1e0b9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,30 @@ -# Docker build file for Inbucket, see https://www.docker.io/ -# Inbucket website: http://www.inbucket.org/ +# Docker build file for Inbucket: https://www.inbucket.org/ -FROM golang:1.10-alpine +# Build +FROM golang:1.10-alpine as builder +RUN apk add --no-cache --virtual .build-deps git make +WORKDIR /go/src/github.com/jhillyerd/inbucket +COPY . . +ENV CGO_ENABLED 0 +RUN make clean deps +RUN go build -o inbucket \ + -ldflags "-X 'main.version=$(git describe --tags --always)' -X 'main.date=$(date -Iseconds)'" \ + -v ./cmd/inbucket + +# Run in minimal image +FROM alpine:3.7 +ENV SRC /go/src/github.com/jhillyerd/inbucket +WORKDIR /opt/inbucket +RUN mkdir bin defaults ui +COPY --from=builder $SRC/inbucket bin +COPY etc/docker/defaults/greeting.html defaults +COPY ui ui +COPY etc/docker/defaults/start-inbucket.sh / # Configuration -ENV INBUCKET_SRC $GOPATH/src/github.com/jhillyerd/inbucket -ENV INBUCKET_HOME /opt/inbucket ENV INBUCKET_SMTP_DISCARDDOMAINS bitbucket.local ENV INBUCKET_SMTP_TIMEOUT 30s ENV INBUCKET_POP3_TIMEOUT 30s -ENV INBUCKET_WEB_UIDIR $INBUCKET_HOME/ui ENV INBUCKET_WEB_GREETINGFILE /config/greeting.html ENV INBUCKET_WEB_COOKIEAUTHKEY secret-inbucket-session-cookie-key ENV INBUCKET_STORAGE_TYPE file @@ -24,10 +39,5 @@ EXPOSE 2500 9000 1100 VOLUME /config VOLUME /storage -WORKDIR $INBUCKET_HOME ENTRYPOINT ["/start-inbucket.sh"] CMD ["-logjson"] - -# Build Inbucket -COPY . $INBUCKET_SRC/ -RUN "$INBUCKET_SRC/etc/docker/install.sh" diff --git a/etc/docker/defaults/start-inbucket.sh b/etc/docker/defaults/start-inbucket.sh index 7315ee7..9960437 100755 --- a/etc/docker/defaults/start-inbucket.sh +++ b/etc/docker/defaults/start-inbucket.sh @@ -2,6 +2,7 @@ # start-inbucket.sh # description: start inbucket (runs within a docker container) +INBUCKET_HOME="/opt/inbucket" CONF_SOURCE="$INBUCKET_HOME/defaults" CONF_TARGET="/config" diff --git a/etc/docker/install.sh b/etc/docker/install.sh deleted file mode 100755 index 413f8de..0000000 --- a/etc/docker/install.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -# install.sh -# description: Build, test, and install Inbucket. Should be executed inside a Docker container. - -set -eo pipefail - -installdir="$INBUCKET_HOME" -srcdir="$INBUCKET_SRC" -bindir="$installdir/bin" -defaultsdir="$installdir/defaults" -contextdir="/con/context" - -echo "### Installing OS Build Dependencies" -apk add --no-cache --virtual .build-deps git - -# Setup -export GOBIN="$bindir" -cd "$srcdir" -builddate="$(date -Iseconds)" -buildver="$(git describe --tags --always)" - -# Build -go clean -echo "### Fetching Dependencies" -go get -t -v ./... - -echo "### Testing Inbucket" -go test ./... - -echo "### Building Inbucket" -go build -o inbucket -ldflags "-X 'main.version=$buildver' -X 'main.date=$builddate'" -v ./cmd/inbucket - -echo "### Installing Inbucket" -set -x -mkdir -p "$bindir" -install inbucket "$bindir" -mkdir -p "$contextdir" -install etc/docker/defaults/start-inbucket.sh / -cp -r ui "$installdir/" -mkdir -p "$defaultsdir" -cp etc/docker/defaults/greeting.html "$defaultsdir" -set +x - -echo "### Removing OS Build Dependencies" -apk del .build-deps - -echo "### Removing $GOPATH" -rm -rf "$GOPATH"