Building scripts for apt/homebrew platforms. (#993)
This commit is contained in:
parent
2f8f01b6d3
commit
365328457e
42
Dockerfile
42
Dockerfile
|
@ -24,8 +24,8 @@ ENV COMMIT_SHA=${COMMIT_SHA:-}
|
|||
ENV REACT_APP_BUILD_COMMIT_SHA=${COMMIT_SHA:-}
|
||||
|
||||
# Download dependencies
|
||||
COPY ui /app
|
||||
WORKDIR /app
|
||||
COPY ui /app/ui
|
||||
WORKDIR /app/ui
|
||||
RUN npm ci --omit=dev --ignore-scripts \
|
||||
# Build frontend
|
||||
&& npm run build -- --base=$UI_PUBLIC_URL
|
||||
|
@ -37,18 +37,18 @@ ARG TARGETPLATFORM
|
|||
# See for details: https://github.com/hadolint/hadolint/wiki/DL4006
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
|
||||
COPY scripts /tmp/scripts
|
||||
COPY api /app
|
||||
WORKDIR /app
|
||||
COPY scripts/apt /app/scripts/apt
|
||||
COPY api /app/api
|
||||
WORKDIR /app/api
|
||||
|
||||
ENV GOPATH="/go"
|
||||
ENV PATH="${GOPATH}/bin:${PATH}"
|
||||
ENV CGO_ENABLED=1
|
||||
|
||||
# Download dependencies
|
||||
RUN chmod +x /tmp/scripts/*.sh \
|
||||
&& /tmp/scripts/install_build_dependencies.sh \
|
||||
&& source /tmp/scripts/set_go_env.sh \
|
||||
RUN chmod +x /app/scripts/apt/*.sh \
|
||||
&& source /app/scripts/apt/set_compiler_env.sh \
|
||||
&& /app/scripts/apt/install_build_dependencies.sh \
|
||||
&& go env \
|
||||
&& go mod download \
|
||||
# Patch go-face
|
||||
|
@ -61,37 +61,25 @@ RUN chmod +x /tmp/scripts/*.sh \
|
|||
&& go build -v -o photoview .
|
||||
|
||||
### Copy api and ui to production environment ###
|
||||
FROM debian:bookworm-slim
|
||||
FROM --platform=${BUILDPLATFORM:-linux/amd64} debian:bookworm-slim AS final
|
||||
ARG TARGETPLATFORM
|
||||
|
||||
# See for details: https://github.com/hadolint/hadolint/wiki/DL4006
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
|
||||
COPY scripts/apt/install_runtime_dependencies.sh /app/scripts/apt/
|
||||
|
||||
# Create a user to run Photoview server
|
||||
RUN groupadd -g 999 photoview \
|
||||
&& useradd -r -u 999 -g photoview -m photoview \
|
||||
# Required dependencies
|
||||
&& apt-get update \
|
||||
&& apt-get install -y curl gnupg gpg libdlib19.1 ffmpeg exiftool libheif1 sqlite3 \
|
||||
# Install Darktable if building for a supported architecture
|
||||
&& if [ "${TARGETPLATFORM}" = "linux/amd64" ] || [ "${TARGETPLATFORM}" = "linux/arm64" ]; then \
|
||||
echo 'deb https://download.opensuse.org/repositories/graphics:/darktable/Debian_12/ /' \
|
||||
| tee /etc/apt/sources.list.d/graphics:darktable.list; \
|
||||
curl -fsSL https://download.opensuse.org/repositories/graphics:/darktable/Debian_12/Release.key \
|
||||
| gpg --dearmor | tee /etc/apt/trusted.gpg.d/graphics_darktable.gpg > /dev/null; \
|
||||
apt-get update; \
|
||||
apt-get install -y darktable; \
|
||||
fi \
|
||||
# Remove build dependencies and cleanup
|
||||
&& apt-get purge -y gnupg gpg \
|
||||
&& apt-get autoremove -y \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
&& chmod +x /app/scripts/apt/*.sh \
|
||||
&& /app/scripts/apt/install_runtime_dependencies.sh
|
||||
|
||||
WORKDIR /home/photoview
|
||||
COPY api/data /app/data
|
||||
COPY --from=ui /app/dist /app/ui
|
||||
COPY --from=api /app/photoview /app/photoview
|
||||
COPY --from=ui /app/ui/dist /app/ui
|
||||
COPY --from=api /app/api/photoview /app/photoview
|
||||
|
||||
ENV PHOTOVIEW_LISTEN_IP=127.0.0.1
|
||||
ENV PHOTOVIEW_LISTEN_PORT=80
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
BUILD_DEPENDS=(gnupg2 gpg)
|
||||
|
||||
apt-get update
|
||||
apt-get install -y ${BUILD_DEPENDS[@]} curl libdlib19.1 ffmpeg exiftool libheif1
|
||||
|
||||
# Install Darktable if building for a supported architecture
|
||||
if [ "${TARGETPLATFORM}" = "linux/amd64" ] || [ "${TARGETPLATFORM}" = "linux/arm64" ]; then
|
||||
echo 'deb https://download.opensuse.org/repositories/graphics:/darktable/Debian_12/ /' \
|
||||
| tee /etc/apt/sources.list.d/graphics:darktable.list
|
||||
curl -fsSL https://download.opensuse.org/repositories/graphics:/darktable/Debian_12/Release.key \
|
||||
| gpg --dearmor | tee /etc/apt/trusted.gpg.d/graphics_darktable.gpg > /dev/null
|
||||
|
||||
apt-get update
|
||||
apt-get install -y darktable
|
||||
fi
|
||||
|
||||
# Remove build dependencies and cleanup
|
||||
apt-get purge -y ${BUILD_DEPENDS[@]}
|
||||
apt-get autoremove -y
|
||||
apt-get clean
|
||||
rm -rf /var/lib/apt/lists/*
|
|
@ -7,34 +7,19 @@
|
|||
: ${TARGETOS=}
|
||||
: ${TARGETARCH=}
|
||||
: ${TARGETVARIANT=}
|
||||
: ${CGO_ENABLED=}
|
||||
: ${GOARCH=}
|
||||
: ${GOOS=}
|
||||
: ${GOARM=}
|
||||
: ${GOBIN=}
|
||||
|
||||
CGO_ENABLED="$(go env CGO_ENABLED)"
|
||||
GOARCH="$(go env GOARCH)"
|
||||
GOOS="$(go env GOOS)"
|
||||
GOARM="$(go env GOARM)"
|
||||
GOBIN="$(go env GOBIN)"
|
||||
|
||||
set -eu
|
||||
|
||||
if [ ! -z "$TARGETPLATFORM" ]; then
|
||||
os="$(echo $TARGETPLATFORM | cut -d"/" -f1)"
|
||||
arch="$(echo $TARGETPLATFORM | cut -d"/" -f2)"
|
||||
if [ ! -z "$os" ] && [ ! -z "$arch" ]; then
|
||||
export GOOS="$os"
|
||||
export GOARCH="$arch"
|
||||
if [ "$arch" = "arm" ]; then
|
||||
case "$(echo $TARGETPLATFORM | cut -d"/" -f3)" in
|
||||
"v5")
|
||||
export GOARM="5"
|
||||
;;
|
||||
"v6")
|
||||
export GOARM="6"
|
||||
;;
|
||||
*)
|
||||
export GOARM="7"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
TARGETOS="$(echo $TARGETPLATFORM | cut -d"/" -f1)"
|
||||
TARGETARCH="$(echo $TARGETPLATFORM | cut -d"/" -f2)"
|
||||
TARGETVARIANT="$(echo $TARGETPLATFORM | cut -d"/" -f3)"
|
||||
fi
|
||||
|
||||
if [ ! -z "$TARGETOS" ]; then
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
brew update
|
||||
brew install libheif dlib jpeg
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
brew update
|
||||
brew install exiftool ffmpeg darktable
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
export CPLUS_INCLUDE_PATH="$(brew --prefix)/opt/jpeg/include:$(brew --prefix)/opt/dlib/include"
|
||||
export LD_LIBRARY_PATH="$(brew --prefix)/opt/jpeg/lib:$(brew --prefix)/opt/dlib/lib"
|
||||
export LIBRARY_PATH="$(brew --prefix)/opt/jpeg/lib:$(brew --prefix)/opt/dlib/lib"
|
Loading…
Reference in New Issue