diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..bc377d61a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +/node_modules +/mailpit diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml new file mode 100644 index 000000000..8c1858c5b --- /dev/null +++ b/.github/workflows/build-docker.yml @@ -0,0 +1,37 @@ +on: + release: + types: [created] + +name: Build docker images +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Get tag + id: tag + uses: dawidd6/action-get-tag@v1 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_ACCESS_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: . + platforms: linux/amd64,linux/arm64,linux/arm + build-args: | + "VERSION=${{ steps.tag.outputs.tag }}" + push: true + tags: axllent/mailpit:latest,axllent/mailpit:${{ steps.tag.outputs.tag }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 75b6a316b..ce78df9c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ Notable changes to Mailpit will be documented in this file. +## 0.0.7 + +### Bugfix +- Command flag should be `--auth-file` + + ## 0.0.6 ### Bugfix diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..e6b012602 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM golang:alpine as builder + +ARG VERSION=dev + +COPY . /app + +WORKDIR /app + +RUN apk add --no-cache git npm && \ +npm install && npm run package && \ +CGO_ENABLED=0 go build -ldflags "-s -w -X github.com/axllent/mailpit/cmd.Version=${VERSION}" -o /mailpit + + +FROM alpine:latest + +COPY --from=builder /mailpit /mailpit + +RUN apk add --no-cache tzdata + +ENTRYPOINT ["/mailpit"] diff --git a/README.md b/README.md index bfde49ad7..c3d641ee6 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,13 @@ Mailpit is inspired by [MailHog](#why-rewrite-mailhog), but much, much faster. - Configurable automatic email pruning (default keeps the most recent 500 emails) - Fast SMTP processing & storing - approximately 300-600 emails per second depending on CPU, network speed & email size - Can handle tens of thousands of emails +- Multi-arch [Docker images](https://github.com/axllent/mailpit/wiki/Docker-image) ## Planned features - Optional HTTPS for web UI - Browser notifications for new mail (HTTPS only) -- Docker container ## Installation diff --git a/cmd/root.go b/cmd/root.go index 8b662bd24..131030dc9 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -85,6 +85,6 @@ func init() { rootCmd.Flags().StringVarP(&config.SMTPListen, "smtp", "s", config.SMTPListen, "SMTP bind interface and port") rootCmd.Flags().StringVarP(&config.HTTPListen, "listen", "l", config.HTTPListen, "HTTP bind interface and port for UI") rootCmd.Flags().IntVarP(&config.MaxMessages, "max", "m", config.MaxMessages, "Max number of messages per mailbox") - rootCmd.Flags().StringVarP(&config.AuthFile, "-auth-file", "a", config.AuthFile, "A username:bcryptpw mapping file") + rootCmd.Flags().StringVarP(&config.AuthFile, "auth-file", "a", config.AuthFile, "A username:bcryptpw mapping file") rootCmd.Flags().BoolVarP(&config.VerboseLogging, "verbose", "v", false, "Verbose logging") }