mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 17:47:03 +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/
|
# Docker build file for Inbucket: https://www.inbucket.org/
|
||||||
# Inbucket website: http://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
|
# Configuration
|
||||||
ENV INBUCKET_SRC $GOPATH/src/github.com/jhillyerd/inbucket
|
|
||||||
ENV INBUCKET_HOME /opt/inbucket
|
|
||||||
ENV INBUCKET_SMTP_DISCARDDOMAINS bitbucket.local
|
ENV INBUCKET_SMTP_DISCARDDOMAINS bitbucket.local
|
||||||
ENV INBUCKET_SMTP_TIMEOUT 30s
|
ENV INBUCKET_SMTP_TIMEOUT 30s
|
||||||
ENV INBUCKET_POP3_TIMEOUT 30s
|
ENV INBUCKET_POP3_TIMEOUT 30s
|
||||||
ENV INBUCKET_WEB_UIDIR $INBUCKET_HOME/ui
|
|
||||||
ENV INBUCKET_WEB_GREETINGFILE /config/greeting.html
|
ENV INBUCKET_WEB_GREETINGFILE /config/greeting.html
|
||||||
ENV INBUCKET_WEB_COOKIEAUTHKEY secret-inbucket-session-cookie-key
|
ENV INBUCKET_WEB_COOKIEAUTHKEY secret-inbucket-session-cookie-key
|
||||||
ENV INBUCKET_STORAGE_TYPE file
|
ENV INBUCKET_STORAGE_TYPE file
|
||||||
@@ -24,10 +39,5 @@ EXPOSE 2500 9000 1100
|
|||||||
VOLUME /config
|
VOLUME /config
|
||||||
VOLUME /storage
|
VOLUME /storage
|
||||||
|
|
||||||
WORKDIR $INBUCKET_HOME
|
|
||||||
ENTRYPOINT ["/start-inbucket.sh"]
|
ENTRYPOINT ["/start-inbucket.sh"]
|
||||||
CMD ["-logjson"]
|
CMD ["-logjson"]
|
||||||
|
|
||||||
# Build Inbucket
|
|
||||||
COPY . $INBUCKET_SRC/
|
|
||||||
RUN "$INBUCKET_SRC/etc/docker/install.sh"
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
# start-inbucket.sh
|
# start-inbucket.sh
|
||||||
# description: start inbucket (runs within a docker container)
|
# description: start inbucket (runs within a docker container)
|
||||||
|
|
||||||
|
INBUCKET_HOME="/opt/inbucket"
|
||||||
CONF_SOURCE="$INBUCKET_HOME/defaults"
|
CONF_SOURCE="$INBUCKET_HOME/defaults"
|
||||||
CONF_TARGET="/config"
|
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