diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml
new file mode 100644
index 0000000..2356df7
--- /dev/null
+++ b/.gitea/workflows/release.yml
@@ -0,0 +1,51 @@
+name: Release
+
+on:
+  push:
+    tags: [ "*" ]
+
+permissions:
+  contents: write
+
+jobs:
+  release:
+    runs-on:
+    - ubuntu-latest
+    steps:
+    - uses: actions/checkout@v4.2.2
+    - uses: docker/setup-qemu-action@v3.6.0
+    - uses: actions/setup-go@v5.4.0
+      with:
+        go-version: stable
+    - uses: docker/login-action@v3.4.0
+      with:
+        registry: git.cryptic.systems
+        username: ${{ github.repository_owner }}
+        password: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
+    - env:
+        GITEA_TOKEN: ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }}
+        GONOSUMDB: ${{ vars.GONOSUMDB }}
+        GOPROXY: ${{ vars.GOPROXY }}
+      uses: goreleaser/goreleaser-action@v6.2.1
+      with:
+        version: "~> v2"
+        args: release --clean
+
+  sync-container-image:
+    needs: release
+    runs-on: ubuntu-latest
+    steps:
+    - name: Copy images to docker.io
+      run: |
+        TAG=$(echo ${{ github.ref_name }} | sed 's/v//gm')
+
+        apt-get update --yes
+        apt-get install --yes skopeo
+        skopeo copy \
+          --all \
+          --dest-password ${{ secrets.DOCKER_IO_PASSWORD }} \
+          --dest-username ${{ secrets.DOCKER_IO_USERNAME }} \
+          --src-password ${{ secrets.GIT_CRYPTIC_SYSTEMS_PACKAGE_REGISTRY_TOKEN }} \
+          --src-username volker.raschek \
+            docker://git.cryptic.systems/volker.raschek/dcmerge-goreleaser:${TAG} \
+            docker://docker.io/volkerraschek/dcmerge-goreleaser:${TAG}
\ No newline at end of file
diff --git a/.goreleaser.yaml b/.goreleaser.yaml
new file mode 100644
index 0000000..273c320
--- /dev/null
+++ b/.goreleaser.yaml
@@ -0,0 +1,154 @@
+project_name: dcmerge
+
+archives:
+- formats: [ "tar.xz" ]
+  files:
+  - README.md
+  - LICENSE
+
+before:
+  hooks:
+  - go mod tidy
+
+builds:
+- main: main.go
+  binary: >-
+    {{ .ProjectName }}-
+    {{- .Version }}-
+    {{- .Os }}-
+    {{- if eq .Arch "amd64" }}amd64
+    {{- else if eq .Arch "amd64_v1" }}amd64
+    {{- else }}{{ .Arch }}{{ end }}
+    {{- if .Arm }}-{{ .Arm }}{{ end }}
+  env:
+  - CGO_ENABLED=0
+  - GONOSUMDB={{ .Env.GONOSUMDB }}
+  - GOPROXY={{ .Env.GOPROXY }}
+  goos:
+  - linux
+  goarch:
+  - amd64
+  - arm
+  - arm64
+  goarm:
+  - "6"
+  - "7"
+  flags:
+  - -trimpath
+  ldflags:
+  - -s -w -X 'main.version={{ trimprefix .Tag "v" }}'
+
+changelog:
+  filters:
+    exclude:
+    - '^chore'
+    - '^docs'
+    - '^test'
+    - Merge pull request
+    - Merge branch
+    - go mod tidy
+  format: "{{.SHA}}: {{.Message}} (@{{.AuthorUsername}})"
+  groups:
+  - title: Features
+    regexp: '^.*?feat(\([[:word:]]+\))??!?:.+$'
+    order: 0
+  - title: "Bug fixes"
+    regexp: '^.*?fix(\([[:word:]]+\))??!?:.+$'
+    order: 1
+  - title: Others
+    order: 999
+  sort: asc
+  use: git
+
+dockers:
+- build_flag_templates:
+  - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
+  - --label=org.opencontainers.image.description={{ .ProjectName }}
+  - --label=org.opencontainers.image.documentation={{ .ProjectName }}
+  - --label=org.opencontainers.image.revision={{ .FullCommit }}
+  - --label=org.opencontainers.image.source={{ .GitURL }}
+  - --label=org.opencontainers.image.title={{ .ProjectName }}
+  - --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }}
+  - --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }}
+  - --platform=linux/amd64
+  - --pull
+  dockerfile: Dockerfile
+  goarch: amd64
+  goos: linux
+  image_templates:
+  - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-amd64'
+  skip_push: false
+  use: buildx
+
+- build_flag_templates:
+  - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
+  - --label=org.opencontainers.image.description={{ .ProjectName }}
+  - --label=org.opencontainers.image.documentation={{ .ProjectName }}
+  - --label=org.opencontainers.image.revision={{ .FullCommit }}
+  - --label=org.opencontainers.image.source={{ .GitURL }}
+  - --label=org.opencontainers.image.title={{ .ProjectName }}
+  - --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }}
+  - --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }}
+  - --platform=linux/arm/v6
+  - --pull
+  dockerfile: Dockerfile
+  goarch: arm
+  goarm: "6"
+  goos: linux
+  image_templates:
+  - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v6'
+  skip_push: false
+  use: buildx
+
+- build_flag_templates:
+  - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
+  - --label=org.opencontainers.image.description={{ .ProjectName }}
+  - --label=org.opencontainers.image.documentation={{ .ProjectName }}
+  - --label=org.opencontainers.image.revision={{ .FullCommit }}
+  - --label=org.opencontainers.image.source={{ .GitURL }}
+  - --label=org.opencontainers.image.title={{ .ProjectName }}
+  - --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }}
+  - --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }}
+  - --platform=linux/arm/v7
+  - --pull
+  dockerfile: Dockerfile
+  goarch: arm
+  goarm: "7"
+  goos: linux
+  image_templates:
+  - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v7'
+  skip_push: false
+  use: buildx
+
+- build_flag_templates:
+  - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
+  - --label=org.opencontainers.image.description={{ .ProjectName }}
+  - --label=org.opencontainers.image.documentation={{ .ProjectName }}
+  - --label=org.opencontainers.image.revision={{ .FullCommit }}
+  - --label=org.opencontainers.image.source={{ .GitURL }}
+  - --label=org.opencontainers.image.title={{ .ProjectName }}
+  - --label=org.opencontainers.image.url=https://git.cryptic.systems/volker.raschek/{{ .ProjectName }}
+  - --label=org.opencontainers.image.version={{ trimprefix .Tag "v" }}
+  - --platform=linux/arm64
+  - --pull
+  dockerfile: Dockerfile
+  goarch: arm64
+  goos: linux
+  image_templates:
+  - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm64'
+  skip_push: false
+  use: buildx
+
+docker_manifests:
+- name_template: 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}'
+  image_templates:
+  - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-amd64'
+  - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v6'
+  - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm-v7'
+  - 'git.cryptic.systems/volker.raschek/{{ .ProjectName }}:{{ trimprefix .Tag "v" }}-arm64'
+
+gitea_urls:
+  api: https://git.cryptic.systems/api/v1
+  download: https://git.cryptic.systems
+
+version: 2
diff --git a/Dockerfile b/Dockerfile
index 38568f2..9403ec8 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,20 +1,5 @@
-FROM docker.io/library/golang:1.23.4-alpine3.19 AS build
+FROM scratch AS build
 
-RUN apk add git make
-
-WORKDIR /workspace
-ADD ./ /workspace
-
-RUN make install \
-      DESTDIR=/cache \
-      PREFIX=/usr \
-      VERSION=${VERSION}
-
-FROM docker.io/library/alpine:3.21
-
-COPY --from=build /cache /
-
-WORKDIR /workspace
-VOLUME [ "/workspace" ]
+COPY dcmerge-* /usr/bin/dcmerge
 
 ENTRYPOINT [ "/usr/bin/dcmerge" ]
\ No newline at end of file