Docker: Set explicit PATH in dist scripts #2125

This commit is contained in:
Michael Mayer
2022-03-23 08:16:01 +01:00
parent ea3a6e6e0a
commit 357995556f
16 changed files with 107 additions and 79 deletions

View File

@@ -1,6 +1,8 @@
# INSTALLS OPTIONAL PACKAGES AND DRIVERS IN DOCKER IMAGES
# Maintainer: Michael Mayer <hello@photoprism.app>
export PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
intel-graphics: gpu
install-intel-graphics: gpu
install-davfs: davfs

View File

@@ -1,5 +1,7 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# This script returns the normalized machine architecture (amd64, arm64, or arm).
# An error is returned if the architecture is currently not supported by PhotoPrism.
@@ -13,7 +15,7 @@ elif [[ $OS == "Windows_NT" ]]; then
exit 1
fi
else
SYSTEM_ARCH=$(/bin/uname -m)
SYSTEM_ARCH=$(uname -m)
fi
BUILD_ARCH=${BUILD_ARCH:-$SYSTEM_ARCH}

View File

@@ -1,5 +1,7 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
######################################## TEST STORAGE FOLDER PERMISSIONS ########################################
STORAGE_PATH=${PHOTOPRISM_STORAGE_PATH:-/photoprism/storage}
@@ -9,12 +11,12 @@ DOC_URL="https://docs.photoprism.app/getting-started/troubleshooting/docker/#fil
set -e
# create directory if not exists
/bin/mkdir -p "${STORAGE_PATH}" || (echo "Failed creating storage folder \"$STORAGE_PATH\", see $DOC_URL" 1>&2; exit 1)
mkdir -p "${STORAGE_PATH}" || (echo "Failed creating storage folder \"$STORAGE_PATH\", see $DOC_URL" 1>&2; exit 1)
# check directory permissions
[[ -w "${STORAGE_PATH}" ]] || \
(echo "Storage folder \"$STORAGE_PATH\" is not writable, see $DOC_URL" 1>&2; exit 1)
# create and delete test file
(/usr/bin/touch "${STORAGE_PATH}/is-writable" 2>/dev/null && rm "${STORAGE_PATH}/is-writable") || \
(touch "${STORAGE_PATH}/is-writable" 2>/dev/null && rm "${STORAGE_PATH}/is-writable") || \
(echo "Failed creating test file in storage folder, see $DOC_URL" 1>&2; exit 1)

View File

@@ -1,7 +1,9 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# abort if not executed as root
if [[ $(/usr/bin/id -u) != "0" ]]; then
if [[ $(id -u) != "0" ]]; then
echo "Usage: run ${0##*/} as root" 1>&2
exit 1
fi
@@ -9,21 +11,21 @@ fi
set -o errexit
if [[ ! -d /tmp ]]; then
/bin/mkdir /tmp
mkdir /tmp
fi
/bin/chmod 1777 /tmp
chmod 1777 /tmp
/usr/bin/apt-get -y autoremove
/usr/bin/apt-get -y autoclean
/bin/rm -rf /var/lib/apt/lists/*
/bin/rm -rf /tmp/* /var/tmp/*
apt-get -y autoremove
apt-get -y autoclean
rm -rf /var/lib/apt/lists/*
rm -rf /tmp/* /var/tmp/*
history -c
/bin/cat /dev/null > /root/.bash_history
cat /dev/null > /root/.bash_history
unset HISTFILE
/usr/bin/find /var/log -mtime -1 -type f -exec truncate -s 0 {} \;
/bin/rm -rf /var/log/*.gz /var/log/*.log /var/log/*.[0-9] /var/log/*-????????
/bin/rm -rf /var/lib/cloud/instances/*
/bin/rm -f /root/.ssh/* /etc/ssh/*key*
find /var/log -mtime -1 -type f -exec truncate -s 0 {} \;
rm -rf /var/log/*.gz /var/log/*.log /var/log/*.[0-9] /var/log/*-????????
rm -rf /var/lib/cloud/instances/*
rm -f /root/.ssh/* /etc/ssh/*key*
echo "Done."

View File

@@ -1,7 +1,9 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# abort if not executed as root
if [[ $(/usr/bin/id -u) != "0" ]]; then
if [[ $(id -u) != "0" ]]; then
echo "Usage: run ${0##*/} as root" 1>&2
exit 1
fi
@@ -13,8 +15,8 @@ set -eu
export DEBIAN_FRONTEND="noninteractive"
export TMPDIR="/tmp"
/usr/bin/apt-get -y update
/usr/bin/apt-get -y dist-upgrade
/usr/bin/apt-get -y autoremove
apt-get -y update
apt-get -y dist-upgrade
apt-get -y autoremove
echo "Done."

View File

@@ -1,9 +1,10 @@
#!/bin/bash
# INITIALIZES CONTAINER PACKAGES AND PERMISSIONS
export PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# abort if not executed as root
if [[ $(/usr/bin/id -u) != "0" ]]; then
if [[ $(id -u) != "0" ]]; then
echo "Usage: run ${0##*/} as root" 1>&2
exit 1
fi
@@ -42,20 +43,20 @@ if [[ ${PHOTOPRISM_UID} =~ $re ]] && [[ ${PHOTOPRISM_UID} != "0" ]]; then
if [[ ${PHOTOPRISM_UID} -ge 500 ]]; then
if [[ ${PHOTOPRISM_GID} =~ $re ]] && [[ ${PHOTOPRISM_GID} != "0" ]] && [[ ${PHOTOPRISM_GID} -ge 500 ]]; then
/usr/sbin/groupadd -g "${PHOTOPRISM_GID}" "group_${PHOTOPRISM_GID}" 2>/dev/null
/usr/sbin/useradd -o -u "${PHOTOPRISM_UID}" -g "${PHOTOPRISM_GID}" -d "/photoprism" "user_${PHOTOPRISM_UID}" 2>/dev/null
/usr/sbin/usermod -g "${PHOTOPRISM_GID}" "user_${PHOTOPRISM_UID}" 2>/dev/null
groupadd -g "${PHOTOPRISM_GID}" "group_${PHOTOPRISM_GID}" 2>/dev/null
useradd -o -u "${PHOTOPRISM_UID}" -g "${PHOTOPRISM_GID}" -d "/photoprism" "user_${PHOTOPRISM_UID}" 2>/dev/null
usermod -g "${PHOTOPRISM_GID}" "user_${PHOTOPRISM_UID}" 2>/dev/null
else
/usr/sbin/useradd -o -u "${PHOTOPRISM_UID}" -g 1000 -d "/photoprism" "user_${PHOTOPRISM_UID}" 2>/dev/null
/usr/sbin/usermod -g 1000 "user_${PHOTOPRISM_UID}" 2>/dev/null
useradd -o -u "${PHOTOPRISM_UID}" -g 1000 -d "/photoprism" "user_${PHOTOPRISM_UID}" 2>/dev/null
usermod -g 1000 "user_${PHOTOPRISM_UID}" 2>/dev/null
fi
fi
if [[ ${CHOWN} ]] && [[ -z ${PHOTOPRISM_DISABLE_CHOWN} ]]; then
echo "init: updating filesystem permissions"
echo "note: PHOTOPRISM_DISABLE_CHOWN=\"true\" disables permission updates"
/bin/chown --preserve-root -Rcf "${CHOWN}" "${CHOWN_DIRS[@]}"
/bin/chmod --preserve-root -Rcf u+rwX "${CHMOD_DIRS[@]}"
chown --preserve-root -Rcf "${CHOWN}" "${CHOWN_DIRS[@]}"
chmod --preserve-root -Rcf u+rwX "${CHMOD_DIRS[@]}"
fi
fi
@@ -70,7 +71,7 @@ INIT_LOCK="/scripts/.init-lock"
if [[ ! -e ${INIT_LOCK} ]]; then
for INIT_TARGET in $PHOTOPRISM_INIT; do
echo "init: $INIT_TARGET"
/usr/bin/make -C "$INIT_SCRIPTS" "$INIT_TARGET"
make -C "$INIT_SCRIPTS" "$INIT_TARGET"
done
echo 1 >${INIT_LOCK}

View File

@@ -7,6 +7,7 @@ re='^[0-9]+$'
export PHOTOPRISM_ARCH=${PHOTOPRISM_ARCH:-arch}
export DOCKER_ENV=${DOCKER_ENV:-unknown}
export DOCKER_TAG=${DOCKER_TAG:-unknown}
export PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# detect environment
case $DOCKER_ENV in

View File

@@ -1,12 +1,14 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# abort if not executed as root
if [[ $(id -u) != "0" ]]; then
echo "Usage: run ${0##*/} as root" 1>&2
exit 1
fi
SYSTEM_ARCH=$("$(/usr/bin/dirname "$0")/arch.sh")
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
DESTARCH=${2:-$SYSTEM_ARCH}
. /etc/os-release
@@ -19,9 +21,9 @@ echo "Installing Google Chrome (stable) on ${ID} for ${DESTARCH^^}..."
set -e
/usr/bin/wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | /usr/bin/apt-key add -
/bin/sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
/usr/bin/apt-get update
/usr/bin/apt-get -qq install google-chrome-stable
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
apt-get update
apt-get -qq install google-chrome-stable
echo "Done."

View File

@@ -1,5 +1,7 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# abort if not executed as root
if [[ $(id -u) != "0" ]]; then
echo "Usage: run ${0##*/} as root" 1>&2
@@ -8,7 +10,7 @@ fi
set -e
SYSTEM_ARCH=$("$(/usr/bin/dirname "$0")/arch.sh")
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
DESTARCH=${2:-$SYSTEM_ARCH}
. /etc/os-release
@@ -18,29 +20,29 @@ echo "Installing Darktable for ${DESTARCH^^}..."
if [[ $DESTARCH == "amd64" ]]; then
if [[ $VERSION_CODENAME == "bullseye" ]]; then
echo 'deb http://download.opensuse.org/repositories/graphics:/darktable/Debian_11/ /' | /usr/bin/tee /etc/apt/sources.list.d/graphics:darktable.list
/usr/bin/curl -fsSL https://download.opensuse.org/repositories/graphics:darktable/Debian_11/Release.key | gpg --dearmor | /usr/bin/tee /etc/apt/trusted.gpg.d/graphics_darktable.gpg > /dev/null
/usr/bin/apt-get update
/usr/bin/apt-get -qq install darktable
curl -fsSL https://download.opensuse.org/repositories/graphics:darktable/Debian_11/Release.key | gpg --dearmor | /usr/bin/tee /etc/apt/trusted.gpg.d/graphics_darktable.gpg > /dev/null
apt-get update
apt-get -qq install darktable
elif [[ $VERSION_CODENAME == "buster" ]]; then
echo 'deb http://download.opensuse.org/repositories/graphics:/darktable/Debian_10/ /' | /usr/bin/tee /etc/apt/sources.list.d/graphics:darktable.list
/usr/bin/curl -fsSL https://download.opensuse.org/repositories/graphics:darktable/Debian_10/Release.key | gpg --dearmor | /usr/bin/tee /etc/apt/trusted.gpg.d/graphics_darktable.gpg > /dev/null
/usr/bin/apt-get update
/usr/bin/apt-get -qq install darktable
curl -fsSL https://download.opensuse.org/repositories/graphics:darktable/Debian_10/Release.key | gpg --dearmor | /usr/bin/tee /etc/apt/trusted.gpg.d/graphics_darktable.gpg > /dev/null
apt-get update
apt-get -qq install darktable
else
echo "install-darktable: installing standard amd64 (Intel 64-bit) package"
/usr/bin/apt-get -qq install darktable
apt-get -qq install darktable
fi
echo "Done."
elif [[ $DESTARCH == "arm64" ]]; then
if [[ $VERSION_CODENAME == "bullseye" ]]; then
/usr/bin/apt-get update
/usr/bin/apt-get -qq install -t bullseye-backports darktable
apt-get update
apt-get -qq install -t bullseye-backports darktable
elif [[ $VERSION_CODENAME == "buster" ]]; then
/usr/bin/apt-get update
/usr/bin/apt-get -qq install -t buster-backports darktable
apt-get update
apt-get -qq install -t buster-backports darktable
else
echo "install-darktable: installing standard amd64 (ARM 64-bit) package"
/usr/bin/apt-get -qq install darktable
apt-get -qq install darktable
fi
echo "Done."
else

View File

@@ -1,5 +1,7 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# abort if not executed as root
if [[ $(id -u) != "0" ]]; then
echo "Usage: run ${0##*/} as root" 1>&2
@@ -8,7 +10,7 @@ fi
echo "Installing WebDAV filesystem driver..."
/usr/bin/apt-get update
/usr/bin/apt-get -qq install davfs2
apt-get update
apt-get -qq install davfs2
echo "Done."

View File

@@ -1,8 +1,9 @@
#!/bin/bash
GOLANG_VERSION=1.18
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
DESTDIR=$(/usr/bin/realpath "${1:-/usr/local}")
GOLANG_VERSION=1.18
DESTDIR=$(realpath "${1:-/usr/local}")
# abort if not executed as root
if [[ $(id -u) != "0" ]]; then
@@ -14,11 +15,11 @@ echo "Installing Go in \"$DESTDIR\"..."
set -e
/bin/mkdir -p "$DESTDIR"
SYSTEM_ARCH=$("$(/usr/bin/dirname "$0")/arch.sh")
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
DESTARCH=${2:-$SYSTEM_ARCH}
mkdir -p "$DESTDIR"
set -eux;
if [[ $DESTARCH == "amd64" ]]; then
@@ -37,11 +38,11 @@ fi
echo "Downloading Go from \"$URL\". Please wait."
/usr/bin/wget -O go.tgz $URL
echo "$CHECKSUM" | /usr/bin/sha256sum -c -
/bin/rm -rf /usr/local/go
/bin/tar -C /usr/local -xzf go.tgz
/bin/rm go.tgz
wget -O go.tgz $URL
echo "$CHECKSUM" | sha256sum -c -
rm -rf /usr/local/go
tar -C /usr/local -xzf go.tgz
rm go.tgz
/usr/local/go/bin/go version

View File

@@ -1,5 +1,7 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# abort if not executed as root
if [[ $(id -u) != "0" ]]; then
echo "Error: Run ${0##*/} as root" 1>&2
@@ -8,7 +10,7 @@ fi
set -e
SYSTEM_ARCH=$("$(/usr/bin/dirname "$0")/arch.sh")
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
DESTARCH=${DESTARCH:-$SYSTEM_ARCH}
TMPDIR=${TMPDIR:-/tmp}
. /etc/os-release
@@ -18,22 +20,22 @@ if [[ $DESTARCH != "amd64" ]]; then
exit
fi
/usr/bin/apt-get update
/usr/bin/apt-get -qq upgrade
/usr/bin/apt-get -qq install lshw jq
apt-get update
apt-get -qq upgrade
apt-get -qq install lshw jq
# shellcheck disable=SC2207
GPU_DETECTED=($(/usr/bin/lshw -c display -json 2>/dev/null | /usr/bin/jq -r '.[].configuration.driver'))
GPU_DETECTED=($(lshw -c display -json 2>/dev/null | jq -r '.[].configuration.driver'))
# shellcheck disable=SC2068
for t in ${GPU_DETECTED[@]}; do
case $t in
i915)
/usr/bin/apt-get -qq install intel-opencl-icd intel-media-va-driver-non-free i965-va-driver-shaders libmfx1 libva2 vainfo libva-wayland2
apt-get -qq install intel-opencl-icd intel-media-va-driver-non-free i965-va-driver-shaders libmfx1 libva2 vainfo libva-wayland2
;;
nvidia)
/usr/bin/apt-get -qq install nvidia-opencl-icd nvidia-vdpau-driver nvidia-driver-libs nvidia-kernel-dkms libva2 vainfo libva-wayland2
apt-get -qq install nvidia-opencl-icd nvidia-vdpau-driver nvidia-driver-libs nvidia-kernel-dkms libva2 vainfo libva-wayland2
;;
*)

View File

@@ -1,5 +1,7 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# abort if not executed as root
if [[ $(id -u) != "0" ]]; then
echo "Usage: run ${0##*/} as root" 1>&2
@@ -17,12 +19,12 @@ SETUP_URL="https://downloads.mariadb.com/MariaDB/mariadb_repo_setup"
if [ ! -f "/etc/apt/sources.list.d/mariadb.list" ]; then
echo "Adding MariaDB packages sources from \"$SETUP_URL\"..."
/usr/bin/curl -Ls $SETUP_URL | /bin/bash -s -- --mariadb-server-version="mariadb-10.6"
curl -Ls $SETUP_URL | bash -s -- --mariadb-server-version="mariadb-10.6"
fi
echo "Installing \"$1\"..."
/usr/bin/apt-get update
/usr/bin/apt-get -qq install $1
apt-get update
apt-get -qq install $1
echo "Done."

View File

@@ -1,5 +1,7 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
# abort if not executed as root
if [[ $(id -u) != "0" ]]; then
echo "Usage: run ${0##*/} as root" 1>&2
@@ -12,8 +14,8 @@ SETUP_URL="https://deb.nodesource.com/setup_16.x"
echo "Installing NodeJS and NPM from \"$SETUP_URL\"..."
/usr/bin/curl -sL $SETUP_URL | /bin/bash -
/usr/bin/apt-get update && /usr/bin/apt-get -qq install nodejs
curl -sL $SETUP_URL | bash -
apt-get update && apt-get -qq install nodejs
npm install --unsafe-perm=true --allow-root -g npm testcafe
npm config set cache ~/.cache/npm

View File

@@ -1,17 +1,19 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
set -e
TF_VERSION=${TF_VERSION:-1.15.2}
SYSTEM_ARCH=$("$(/usr/bin/dirname "$0")/arch.sh")
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
DESTARCH=${DESTARCH:-$SYSTEM_ARCH}
if [[ $1 == "auto" ]]; then
TF_DRIVER="auto";
DESTDIR="/usr";
else
DESTDIR=$(/usr/bin/realpath "${1:-/usr}")
DESTDIR=$(realpath "${1:-/usr}")
fi
TMPDIR=${TMPDIR:-/tmp}
@@ -26,7 +28,7 @@ fi
if [[ $TF_DRIVER == "auto" ]]; then
echo "Detecting driver..."
TF_DRIVER=$("$(/usr/bin/dirname "$0")/tensorflow-driver.sh")
TF_DRIVER=$("$(dirname "$0")/tensorflow-driver.sh")
fi
if [[ -z $TF_DRIVER ]]; then
@@ -40,13 +42,13 @@ fi
if [ ! -f "$TMPDIR/$INSTALL_FILE" ]; then
URL="https://dl.photoprism.app/tensorflow/${INSTALL_FILE}"
echo "Downloading ${DESTARCH} libs from \"$URL\". Please wait."
/usr/bin/curl --create-dirs -fsSL -o "$TMPDIR/$INSTALL_FILE" "$URL"
curl --create-dirs -fsSL -o "$TMPDIR/$INSTALL_FILE" "$URL"
fi
echo "Extracting \"$TMPDIR/$INSTALL_FILE\" to \"$DESTDIR\"."
if [ -f "$TMPDIR/$INSTALL_FILE" ]; then
/bin/tar --overwrite --mode=755 -C "$DESTDIR" -xzf "$TMPDIR/$INSTALL_FILE"
tar --overwrite --mode=755 -C "$DESTDIR" -xzf "$TMPDIR/$INSTALL_FILE"
else
echo "Fatal: \"$TMPDIR/$INSTALL_FILE\" not found"
exit 1
@@ -54,10 +56,10 @@ fi
if [[ $DESTDIR == "/usr" || $DESTDIR == "/usr/local" ]]; then
echo "Running \"ldconfig\"."
/sbin/ldconfig
ldconfig
else
echo "Running \"ldconfig -n $DESTDIR/lib\"."
/sbin/ldconfig -n "$DESTDIR/lib"
ldconfig -n "$DESTDIR/lib"
fi
echo "Done."

View File

@@ -1,9 +1,10 @@
#!/bin/bash
PATH="/usr/local/sbin/:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts"
CPU_DETECTED=$(/usr/bin/lshw -c processor -json 2>/dev/null)
if [[ $(echo "${CPU_DETECTED}" | /usr/bin/jq -r '.[].capabilities.avx2') == "true" ]]; then
if [[ $(echo "${CPU_DETECTED}" | jq -r '.[].capabilities.avx2') == "true" ]]; then
echo "avx2"
elif [[ $(echo "${CPU_DETECTED}" | /usr/bin/jq -r '.[].capabilities.avx') == "true" ]]; then
elif [[ $(echo "${CPU_DETECTED}" | jq -r '.[].capabilities.avx') == "true" ]]; then
echo "avx"
fi