37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
# Certificate Store
 | 
						|
FROM alpine as certs
 | 
						|
RUN apk update && apk add ca-certificates
 | 
						|
 | 
						|
# Build Image
 | 
						|
FROM --platform=$BUILDPLATFORM golang:1.20 AS build
 | 
						|
 | 
						|
# Install Dependencies
 | 
						|
RUN apt-get update -y
 | 
						|
RUN apt install -y gcc-x86-64-linux-gnu
 | 
						|
 | 
						|
# Create Package Directory
 | 
						|
WORKDIR /src
 | 
						|
RUN mkdir -p /opt/bookmanager
 | 
						|
 | 
						|
# Cache Dependencies & Compile
 | 
						|
ARG TARGETOS
 | 
						|
ARG TARGETARCH
 | 
						|
RUN --mount=target=. \
 | 
						|
    --mount=type=cache,target=/root/.cache/go-build \
 | 
						|
    --mount=type=cache,target=/go/pkg \
 | 
						|
    if [ "$TARGETARCH" = "amd64" ]; then \
 | 
						|
	GOOS=$TARGETOS GOARCH=$TARGETARCH CGO_ENABLED=1 CGO_CFLAGS="-D_LARGEFILE64_SOURCE" CC=x86_64-linux-gnu-gcc go build -o /opt/bookmanager/server; \
 | 
						|
    else \
 | 
						|
	GOOS=$TARGETOS GOARCH=$TARGETARCH CGO_ENABLED=1 CGO_CFLAGS="-D_LARGEFILE64_SOURCE" go build -o /opt/bookmanager/server; \
 | 
						|
    fi; \
 | 
						|
    cp -a ./templates /opt/bookmanager/templates; \
 | 
						|
    cp -a ./assets /opt/bookmanager/assets;
 | 
						|
 | 
						|
# Create Image
 | 
						|
FROM busybox:1.36
 | 
						|
COPY --from=certs /etc/ssl/certs /etc/ssl/certs
 | 
						|
COPY --from=build /opt/bookmanager /opt/bookmanager
 | 
						|
WORKDIR /opt/bookmanager
 | 
						|
EXPOSE 8585
 | 
						|
ENTRYPOINT ["/opt/bookmanager/server", "serve"]
 |