[add] docker instructions, [add] metadata gathering, [add] screenshots
This commit is contained in:
38
Dockerfile
38
Dockerfile
@@ -1,19 +1,35 @@
|
||||
FROM alpine:edge AS build
|
||||
RUN apk add --no-cache --update go gcc g++
|
||||
WORKDIR /app
|
||||
COPY . /app
|
||||
# Certificate Store
|
||||
FROM alpine as certs
|
||||
RUN apk update && apk add ca-certificates
|
||||
|
||||
# Copy Resources
|
||||
# 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
|
||||
RUN cp -a ./templates /opt/bookmanager/templates
|
||||
RUN cp -a ./assets /opt/bookmanager/assets
|
||||
|
||||
# Download Dependencies & Compile
|
||||
RUN go mod download
|
||||
RUN CGO_ENABLED=1 CGO_CFLAGS="-D_LARGEFILE64_SOURCE" go build -o /opt/bookmanager/server
|
||||
# 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 alpine:3.18
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user