ARG GO_VERSION=1.25.13 ARG OS_VERSION=bullseye FROM golang:${GO_VERSION}-bookworm AS build WORKDIR /src COPY go/go.mod go/go.sum ./go/ WORKDIR /src/go RUN go mod download \ && go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11 WORKDIR /src COPY cpp/shared/piscsi_version.cpp cpp/shared/piscsi_version.cpp COPY go go COPY proto proto WORKDIR /src/go RUN apt-get update \ && apt-get install --yes --no-install-recommends protobuf-compiler \ && rm -rf /var/lib/apt/lists/* \ && PATH="$(go env GOPATH)/bin:$PATH" ./proto/generate.sh \ && CGO_ENABLED=0 go build -tags nomsgpack -ldflags '-s -w' -o /out/piscsi-web ./piscsi-web/cmd/piscsi-web \ && CGO_ENABLED=0 go build -ldflags '-s -w' -o /out/mock-piscsi ./piscsi-web/cmd/mock-piscsi FROM debian:${OS_VERSION}-slim RUN apt-get update \ && apt-get install --yes --no-install-recommends \ ca-certificates \ disktype \ dosfstools \ genisoimage \ hfsutils \ kpartx \ man2html \ openssl \ unar \ unzip \ wget \ && rm -rf /var/lib/apt/lists/* RUN groupadd --system pi \ && useradd --system --create-home --home-dir /home/pi --shell /usr/sbin/nologin --gid pi pi \ && install -d --owner=pi --group=pi --mode=0777 \ /home/pi/images \ /home/pi/shared_files \ /home/pi/.config/piscsi \ && install -d --owner=pi --group=pi \ /home/pi/web/templates \ /home/pi/web/static COPY --from=build /out/piscsi-web /usr/local/bin/piscsi-web COPY --from=build /out/mock-piscsi /usr/local/bin/mock-piscsi COPY --from=build /src/go/piscsi-web/drive_properties.json /home/pi/drive_properties.json COPY docker/web/web_start_wrapper.sh /usr/local/bin/web_start_wrapper.sh RUN chown pi:pi /home/pi/drive_properties.json \ && chmod 0755 /usr/local/bin/piscsi-web /usr/local/bin/mock-piscsi /usr/local/bin/web_start_wrapper.sh USER pi WORKDIR /home/pi EXPOSE 8080 ENTRYPOINT ["/usr/local/bin/web_start_wrapper.sh"] HEALTHCHECK --interval=5m --timeout=3s \ CMD wget --quiet --output-document=/dev/null http://localhost:8080/healthcheck