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:-}
|
ENV REACT_APP_BUILD_COMMIT_SHA=${COMMIT_SHA:-}
|
||||||
|
|
||||||
# Download dependencies
|
# Download dependencies
|
||||||
COPY ui /app
|
COPY ui /app/ui
|
||||||
WORKDIR /app
|
WORKDIR /app/ui
|
||||||
RUN npm ci --omit=dev --ignore-scripts \
|
RUN npm ci --omit=dev --ignore-scripts \
|
||||||
# Build frontend
|
# Build frontend
|
||||||
&& npm run build -- --base=$UI_PUBLIC_URL
|
&& npm run build -- --base=$UI_PUBLIC_URL
|
||||||
|
@ -37,18 +37,18 @@ ARG TARGETPLATFORM
|
||||||
# See for details: https://github.com/hadolint/hadolint/wiki/DL4006
|
# See for details: https://github.com/hadolint/hadolint/wiki/DL4006
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
COPY scripts /tmp/scripts
|
COPY scripts/apt /app/scripts/apt
|
||||||
COPY api /app
|
COPY api /app/api
|
||||||
WORKDIR /app
|
WORKDIR /app/api
|
||||||
|
|
||||||
ENV GOPATH="/go"
|
ENV GOPATH="/go"
|
||||||
ENV PATH="${GOPATH}/bin:${PATH}"
|
ENV PATH="${GOPATH}/bin:${PATH}"
|
||||||
ENV CGO_ENABLED=1
|
ENV CGO_ENABLED=1
|
||||||
|
|
||||||
# Download dependencies
|
# Download dependencies
|
||||||
RUN chmod +x /tmp/scripts/*.sh \
|
RUN chmod +x /app/scripts/apt/*.sh \
|
||||||
&& /tmp/scripts/install_build_dependencies.sh \
|
&& source /app/scripts/apt/set_compiler_env.sh \
|
||||||
&& source /tmp/scripts/set_go_env.sh \
|
&& /app/scripts/apt/install_build_dependencies.sh \
|
||||||
&& go env \
|
&& go env \
|
||||||
&& go mod download \
|
&& go mod download \
|
||||||
# Patch go-face
|
# Patch go-face
|
||||||
|
@ -61,37 +61,25 @@ RUN chmod +x /tmp/scripts/*.sh \
|
||||||
&& go build -v -o photoview .
|
&& go build -v -o photoview .
|
||||||
|
|
||||||
### Copy api and ui to production environment ###
|
### Copy api and ui to production environment ###
|
||||||
FROM debian:bookworm-slim
|
FROM --platform=${BUILDPLATFORM:-linux/amd64} debian:bookworm-slim AS final
|
||||||
ARG TARGETPLATFORM
|
ARG TARGETPLATFORM
|
||||||
|
|
||||||
# See for details: https://github.com/hadolint/hadolint/wiki/DL4006
|
# See for details: https://github.com/hadolint/hadolint/wiki/DL4006
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
|
COPY scripts/apt/install_runtime_dependencies.sh /app/scripts/apt/
|
||||||
|
|
||||||
# Create a user to run Photoview server
|
# Create a user to run Photoview server
|
||||||
RUN groupadd -g 999 photoview \
|
RUN groupadd -g 999 photoview \
|
||||||
&& useradd -r -u 999 -g photoview -m photoview \
|
&& useradd -r -u 999 -g photoview -m photoview \
|
||||||
# Required dependencies
|
# Required dependencies
|
||||||
&& apt-get update \
|
&& chmod +x /app/scripts/apt/*.sh \
|
||||||
&& apt-get install -y curl gnupg gpg libdlib19.1 ffmpeg exiftool libheif1 sqlite3 \
|
&& /app/scripts/apt/install_runtime_dependencies.sh
|
||||||
# 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/*
|
|
||||||
|
|
||||||
WORKDIR /home/photoview
|
WORKDIR /home/photoview
|
||||||
COPY api/data /app/data
|
COPY api/data /app/data
|
||||||
COPY --from=ui /app/dist /app/ui
|
COPY --from=ui /app/ui/dist /app/ui
|
||||||
COPY --from=api /app/photoview /app/photoview
|
COPY --from=api /app/api/photoview /app/photoview
|
||||||
|
|
||||||
ENV PHOTOVIEW_LISTEN_IP=127.0.0.1
|
ENV PHOTOVIEW_LISTEN_IP=127.0.0.1
|
||||||
ENV PHOTOVIEW_LISTEN_PORT=80
|
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=}
|
: ${TARGETOS=}
|
||||||
: ${TARGETARCH=}
|
: ${TARGETARCH=}
|
||||||
: ${TARGETVARIANT=}
|
: ${TARGETVARIANT=}
|
||||||
: ${CGO_ENABLED=}
|
|
||||||
: ${GOARCH=}
|
CGO_ENABLED="$(go env CGO_ENABLED)"
|
||||||
: ${GOOS=}
|
GOARCH="$(go env GOARCH)"
|
||||||
: ${GOARM=}
|
GOOS="$(go env GOOS)"
|
||||||
: ${GOBIN=}
|
GOARM="$(go env GOARM)"
|
||||||
|
GOBIN="$(go env GOBIN)"
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
if [ ! -z "$TARGETPLATFORM" ]; then
|
if [ ! -z "$TARGETPLATFORM" ]; then
|
||||||
os="$(echo $TARGETPLATFORM | cut -d"/" -f1)"
|
TARGETOS="$(echo $TARGETPLATFORM | cut -d"/" -f1)"
|
||||||
arch="$(echo $TARGETPLATFORM | cut -d"/" -f2)"
|
TARGETARCH="$(echo $TARGETPLATFORM | cut -d"/" -f2)"
|
||||||
if [ ! -z "$os" ] && [ ! -z "$arch" ]; then
|
TARGETVARIANT="$(echo $TARGETPLATFORM | cut -d"/" -f3)"
|
||||||
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
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -z "$TARGETOS" ]; then
|
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