From 728e6452b35e2f7736beed42b80661a8a663b563 Mon Sep 17 00:00:00 2001 From: Rasmus Karlsson Date: Sat, 13 Aug 2022 18:16:32 +0200 Subject: [PATCH] Add Docker support Instructions for how to build & use it added to README.md Add GitHub workflow to publishing the docker image to the GitHub Container Repository --- .github/workflows/docker-publish.yml | 66 ++++++++++++++++++++++++++++ Dockerfile | 9 ++++ README.md | 18 ++++++++ 3 files changed, 93 insertions(+) create mode 100644 .github/workflows/docker-publish.yml create mode 100644 Dockerfile diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..e51e778 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,66 @@ +--- +name: Docker + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + # Run tests for any PRs. + pull_request: + branches: + - master + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + # Run tests. + # See also https://docs.docker.com/docker-hub/builds/automated-testing/ + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Run tests + run: docker build . --file Dockerfile + + push: + needs: test + if: ${{ github.event_name != 'pull_request' }} + permissions: + contents: read + packages: write + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Log into GitHub Container Registry + uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@69f6fc9d46f2f8bf0d5491e4aabe0bb8c6a4678a + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push Docker image + uses: docker/build-push-action@e551b19e49efd4e98792db7592c17c09b89db8d8 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..22ddb90 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM golang:alpine as build +WORKDIR /app +COPY . . +RUN go build + +FROM alpine:latest +COPY --from=build /app/jaf /app/jaf +WORKDIR /app +CMD ["./jaf"] diff --git a/README.md b/README.md index 69e0425..0070e64 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,24 @@ jaf -configFile example.conf ``` Of course, you can also write a init system script to handle this for you. +### Running from Docker +Running it from the GitHub Container Registry +```bash +docker run \ + -v /path/to/your/config.conf:/app/jaf.conf \ + -v /path/to/where/you/want/your/files/to/be/stored:/FileDir/in/your/config \ + ghcr.io/leon-richardt/jaf:latest +``` + +Building the Docker image and running it locally +```bash +docker build -t jaf . +docker run \ + -v /path/to/your/config.conf:/app/jaf.conf \ + -v /path/to/where/you/want/your/files/to/be/stored:/FileDir/in/your/config \ + jaf +``` + ## Usage You can use jaf with any application that can send POST requests (e.g. ShareX/ShareNix or just `curl`). Make sure the file you want to upload is attached as a `multipart/form-data` field named `file`.