mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 09:37:02 +00:00
docker: Switch to multistage build, closes #66
This commit is contained in:
32
Dockerfile
32
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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user