feat: build multi-arch docker images
This commit is contained in:
		
							parent
							
								
									e8c9d1c539
								
							
						
					
					
						commit
						cf4836dc75
					
				| 
						 | 
				
			
			@ -1,8 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  "port": 80,
 | 
			
		||||
  "baseURL": "",
 | 
			
		||||
  "address": "",
 | 
			
		||||
  "log": "stdout",
 | 
			
		||||
  "database": "/database.db",
 | 
			
		||||
  "root": "/srv"
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,2 @@
 | 
			
		|||
testdata/
 | 
			
		||||
.github/
 | 
			
		||||
**.git
 | 
			
		||||
*
 | 
			
		||||
!filebrowser
 | 
			
		||||
							
								
								
									
										119
									
								
								.goreleaser.yml
								
								
								
								
							
							
						
						
									
										119
									
								
								.goreleaser.yml
								
								
								
								
							| 
						 | 
				
			
			@ -19,10 +19,6 @@ build:
 | 
			
		|||
    - linux
 | 
			
		||||
    - windows
 | 
			
		||||
    - freebsd
 | 
			
		||||
    - netbsd
 | 
			
		||||
    - openbsd
 | 
			
		||||
    - dragonfly
 | 
			
		||||
    - solaris
 | 
			
		||||
  goarch:
 | 
			
		||||
    - amd64
 | 
			
		||||
    - 386
 | 
			
		||||
| 
						 | 
				
			
			@ -35,14 +31,8 @@ build:
 | 
			
		|||
  ignore:
 | 
			
		||||
    - goos: darwin
 | 
			
		||||
      goarch: 386
 | 
			
		||||
    - goos: openbsd
 | 
			
		||||
      goarch: arm
 | 
			
		||||
    - goos: freebsd
 | 
			
		||||
      goarch: arm
 | 
			
		||||
    - goos: netbsd
 | 
			
		||||
      goarch: arm
 | 
			
		||||
    - goos: solaris
 | 
			
		||||
      goarch: arm
 | 
			
		||||
 | 
			
		||||
archives:
 | 
			
		||||
  -
 | 
			
		||||
| 
						 | 
				
			
			@ -55,53 +45,86 @@ archives:
 | 
			
		|||
dockers:
 | 
			
		||||
  -
 | 
			
		||||
    dockerfile: Dockerfile
 | 
			
		||||
    binaries:
 | 
			
		||||
      - filebrowser
 | 
			
		||||
    use_buildx: true
 | 
			
		||||
    build_flag_templates:
 | 
			
		||||
      - "--pull"
 | 
			
		||||
      - "--label=org.opencontainers.image.created={{.Date}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.name={{.ProjectName}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.revision={{.FullCommit}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.version={{.Version}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.source={{.GitURL}}"
 | 
			
		||||
      - "--platform=linux/amd64"
 | 
			
		||||
    goos: linux
 | 
			
		||||
    goarch: amd64
 | 
			
		||||
    goarm: ''
 | 
			
		||||
    image_templates:
 | 
			
		||||
      - "filebrowser/filebrowser:latest"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}"
 | 
			
		||||
      - "filebrowser/filebrowser:v{{ .Major }}"
 | 
			
		||||
    extra_files:
 | 
			
		||||
      - .docker.json
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-amd64"
 | 
			
		||||
      - "filebrowser/filebrowser:v{{ .Major }}-amd64"
 | 
			
		||||
  -
 | 
			
		||||
    dockerfile: Dockerfile
 | 
			
		||||
    binaries:
 | 
			
		||||
      - filebrowser
 | 
			
		||||
    use_buildx: true
 | 
			
		||||
    build_flag_templates:
 | 
			
		||||
      - "--pull"
 | 
			
		||||
      - "--label=org.opencontainers.image.created={{.Date}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.name={{.ProjectName}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.revision={{.FullCommit}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.version={{.Version}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.source={{.GitURL}}"
 | 
			
		||||
      - "--platform=linux/arm64"
 | 
			
		||||
    goos: linux
 | 
			
		||||
    goarch: arm64
 | 
			
		||||
    image_templates:
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-arm64"
 | 
			
		||||
      - "filebrowser/filebrowser:v{{ .Major }}-arm64"
 | 
			
		||||
  -
 | 
			
		||||
    dockerfile: Dockerfile
 | 
			
		||||
    use_buildx: true
 | 
			
		||||
    build_flag_templates:
 | 
			
		||||
      - "--pull"
 | 
			
		||||
      - "--label=org.opencontainers.image.created={{.Date}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.name={{.ProjectName}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.revision={{.FullCommit}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.version={{.Version}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.source={{.GitURL}}"
 | 
			
		||||
      - "--platform=linux/arm/v6"
 | 
			
		||||
    goos: linux
 | 
			
		||||
    goarch: arm
 | 
			
		||||
    goarm: '5'
 | 
			
		||||
    goarm: '6'
 | 
			
		||||
    image_templates:
 | 
			
		||||
      - "filebrowser/filebrowser:pi"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-pi"
 | 
			
		||||
      - "filebrowser/filebrowser:v{{ .Major }}-pi"
 | 
			
		||||
    extra_files:
 | 
			
		||||
      - .docker.json
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-armv6"
 | 
			
		||||
      - "filebrowser/filebrowser:v{{ .Major }}-armv6"
 | 
			
		||||
  -
 | 
			
		||||
    dockerfile: Dockerfile.alpine
 | 
			
		||||
    binaries:
 | 
			
		||||
      - filebrowser
 | 
			
		||||
    dockerfile: Dockerfile
 | 
			
		||||
    use_buildx: true
 | 
			
		||||
    build_flag_templates:
 | 
			
		||||
      - "--pull"
 | 
			
		||||
      - "--label=org.opencontainers.image.created={{.Date}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.name={{.ProjectName}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.revision={{.FullCommit}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.version={{.Version}}"
 | 
			
		||||
      - "--label=org.opencontainers.image.source={{.GitURL}}"
 | 
			
		||||
      - "--platform=linux/arm/v7"
 | 
			
		||||
    goos: linux
 | 
			
		||||
    goarch: amd64
 | 
			
		||||
    goarm: ''
 | 
			
		||||
    goarch: arm
 | 
			
		||||
    goarm: '7'
 | 
			
		||||
    image_templates:
 | 
			
		||||
      - "filebrowser/filebrowser:alpine"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-alpine"
 | 
			
		||||
      - "filebrowser/filebrowser:v{{ .Major }}-alpine"
 | 
			
		||||
    extra_files:
 | 
			
		||||
      - .docker.json
 | 
			
		||||
  -
 | 
			
		||||
    dockerfile: Dockerfile.debian
 | 
			
		||||
    binaries:
 | 
			
		||||
      - filebrowser
 | 
			
		||||
    goos: linux
 | 
			
		||||
    goarch: amd64
 | 
			
		||||
    goarm: ''
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-armv7"
 | 
			
		||||
      - "filebrowser/filebrowser:v{{ .Major }}-armv7"
 | 
			
		||||
docker_manifests:
 | 
			
		||||
  - name_template: "filebrowser/filebrowser:latest"
 | 
			
		||||
    image_templates:
 | 
			
		||||
      - "filebrowser/filebrowser:debian"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-debian"
 | 
			
		||||
      - "filebrowser/filebrowser:v{{ .Major }}-debian"
 | 
			
		||||
    extra_files:
 | 
			
		||||
      - .docker.json
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-amd64"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-arm64"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-armv6"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-armv7"
 | 
			
		||||
  - name_template: "filebrowser/filebrowser:{{ .Tag }}"
 | 
			
		||||
    image_templates:
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-amd64"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-arm64"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-armv6"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Tag }}-armv7"
 | 
			
		||||
  - name_template: "filebrowser/filebrowser:{{ .Major }}"
 | 
			
		||||
    image_templates:
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Major }}-amd64"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Major }}-arm64"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Major }}-armv6"
 | 
			
		||||
      - "filebrowser/filebrowser:{{ .Major }}-armv7"
 | 
			
		||||
							
								
								
									
										36
									
								
								Dockerfile
								
								
								
								
							
							
						
						
									
										36
									
								
								Dockerfile
								
								
								
								
							| 
						 | 
				
			
			@ -1,15 +1,37 @@
 | 
			
		|||
FROM alpine:latest as alpine
 | 
			
		||||
FROM alpine:latest
 | 
			
		||||
RUN apk --update add ca-certificates
 | 
			
		||||
RUN apk --update add mailcap
 | 
			
		||||
 | 
			
		||||
FROM scratch
 | 
			
		||||
COPY --from=alpine /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
 | 
			
		||||
COPY --from=alpine /etc/mime.types /etc/mime.types
 | 
			
		||||
 | 
			
		||||
VOLUME /srv
 | 
			
		||||
EXPOSE 80
 | 
			
		||||
 | 
			
		||||
COPY .docker.json /.filebrowser.json
 | 
			
		||||
COPY filebrowser /filebrowser
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT [ "/filebrowser" ]
 | 
			
		||||
# Create appuser.
 | 
			
		||||
ENV USER=root
 | 
			
		||||
ENV GROUP=root
 | 
			
		||||
ENV UID=0
 | 
			
		||||
ENV GID=0
 | 
			
		||||
ENV UMASK=022
 | 
			
		||||
 | 
			
		||||
RUN if [ "$GID" -ne 0 ]; then \
 | 
			
		||||
    addgroup \
 | 
			
		||||
    -g "${GID}" \
 | 
			
		||||
    "${GROUP}" ; \
 | 
			
		||||
    fi;
 | 
			
		||||
 | 
			
		||||
RUN adduser \
 | 
			
		||||
    -g "" \
 | 
			
		||||
    -D \
 | 
			
		||||
    -G "${GROUP}" \
 | 
			
		||||
    -H \
 | 
			
		||||
    -h "/nonexistent" \
 | 
			
		||||
    -s "/sbin/nologin" \
 | 
			
		||||
    -u "${UID}" \
 | 
			
		||||
    "${USER}"
 | 
			
		||||
 | 
			
		||||
USER ${USER}:${GROUP}
 | 
			
		||||
 | 
			
		||||
RUN umask ${UMASK}
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT [ "/filebrowser" ]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,11 +0,0 @@
 | 
			
		|||
FROM alpine:latest as alpine
 | 
			
		||||
RUN apk --update add ca-certificates
 | 
			
		||||
RUN apk --update add mailcap
 | 
			
		||||
 | 
			
		||||
VOLUME /srv
 | 
			
		||||
EXPOSE 80
 | 
			
		||||
 | 
			
		||||
COPY .docker.json /.filebrowser.json
 | 
			
		||||
COPY filebrowser /filebrowser
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT [ "/filebrowser" ]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +0,0 @@
 | 
			
		|||
FROM debian:buster
 | 
			
		||||
 | 
			
		||||
VOLUME /srv
 | 
			
		||||
EXPOSE 80
 | 
			
		||||
 | 
			
		||||
COPY .docker.json /.filebrowser.json
 | 
			
		||||
COPY filebrowser /filebrowser
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT [ "/filebrowser" ]
 | 
			
		||||
		Loading…
	
		Reference in New Issue