diff --git a/monica/Dockerfile b/monica/Dockerfile index f9bad2b14..64015e98e 100644 --- a/monica/Dockerfile +++ b/monica/Dockerfile @@ -52,13 +52,29 @@ ENV PACKAGES="mariadb-client" # Meilisearch ARG MEILISEARCH_VERSION="v1.25.0" -RUN case "${BUILD_ARCH}" in \ - amd64) MEILI_ARCH="linux-amd64" ;; \ - aarch64) MEILI_ARCH="linux-aarch64" ;; \ - *) echo "Unsupported architecture: ${BUILD_ARCH}" >&2 && exit 1 ;; \ +RUN set -eux && \ + DETECTED_ARCH="${BUILD_ARCH:-$(uname -m)}" && \ + case "${DETECTED_ARCH}" in \ + amd64|x86_64) MEILI_ARCH="linux-amd64" ;; \ + aarch64|arm64) MEILI_ARCH="linux-aarch64" ;; \ + *) echo "Unsupported architecture: ${DETECTED_ARCH}" >&2 && exit 1 ;; \ esac && \ - curl -fsSL -o /usr/local/bin/meilisearch "https://github.com/meilisearch/meilisearch/releases/download/${MEILISEARCH_VERSION}/meilisearch-${MEILI_ARCH}" && \ + TMP_DIR="$(mktemp -d)" && \ + BASE_URL="https://github.com/meilisearch/meilisearch/releases/download/${MEILISEARCH_VERSION}" && \ + if curl -fsSL -o "${TMP_DIR}/meilisearch.tar.gz" "${BASE_URL}/meilisearch-${MEILI_ARCH}.tar.gz"; then \ + tar -xzf "${TMP_DIR}/meilisearch.tar.gz" -C "${TMP_DIR}" && \ + MEILI_BIN="$(find "${TMP_DIR}" -maxdepth 1 -type f -name 'meilisearch' -print -quit)" && \ + if [ -z "${MEILI_BIN}" ]; then \ + echo "Unable to locate Meilisearch binary in archive" >&2; \ + exit 1; \ + fi && \ + mv "${MEILI_BIN}" /usr/local/bin/meilisearch; \ + else \ + curl -fsSL -o "${TMP_DIR}/meilisearch" "${BASE_URL}/meilisearch-${MEILI_ARCH}" && \ + mv "${TMP_DIR}/meilisearch" /usr/local/bin/meilisearch; \ + fi && \ chmod 755 /usr/local/bin/meilisearch && \ + rm -rf "${TMP_DIR}" && \ mkdir -p /data/meilisearch # Automatic apps & bashio