mirror of
https://codeberg.org/VnPower/PixivFE
synced 2024-12-06 19:16:23 +01:00
5ad8d76e0a
rename folders within
38 lines
1.1 KiB
Docker
38 lines
1.1 KiB
Docker
# ------ Builder stage ------
|
|
FROM golang:1.22 AS builder
|
|
WORKDIR /app
|
|
|
|
COPY go.* ./
|
|
RUN go mod download
|
|
COPY . ./
|
|
|
|
# Build the application binary with optimisations for a smaller, static binary
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -mod=readonly -v -ldflags="-s -w" -o pixivfe
|
|
|
|
# ------ Final image ------
|
|
FROM alpine:3.19
|
|
WORKDIR /app
|
|
|
|
# Create a non-root user `pixivfe` for security purposes and set ownership
|
|
RUN addgroup -g 1000 -S pixivfe && \
|
|
adduser -u 1000 -S pixivfe -G pixivfe && \
|
|
chown -R pixivfe:pixivfe /app
|
|
|
|
# Copy the compiled application and other necessary files from the builder stage
|
|
COPY --from=builder /app/pixivfe /app/pixivfe
|
|
COPY --from=builder /app/assets /app/assets
|
|
COPY ./docker/entrypoint.sh /entrypoint.sh
|
|
# Include entrypoint script and ensure it's executable
|
|
RUN chmod +x /entrypoint.sh && \
|
|
chown pixivfe:pixivfe /entrypoint.sh
|
|
|
|
# Use the non-root user to run the application
|
|
USER pixivfe
|
|
|
|
EXPOSE 8282
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|
|
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=15s --start-interval=5s --retries=3 \
|
|
CMD wget --spider -q --tries=1 http://127.0.0.1:8282/about || exit 1
|