mirror of
https://github.com/ArchiveBox/ArchiveBox
synced 2024-11-22 04:03:06 +00:00
switch back to locked cache instead of private but put targetarch in cache id to separate them
This commit is contained in:
parent
57f033be60
commit
c6e5a565c0
2 changed files with 37 additions and 18 deletions
18
Dockerfile
18
Dockerfile
|
@ -103,7 +103,7 @@ RUN echo "[*] Setting up $ARCHIVEBOX_USER user uid=${DEFAULT_PUID}..." \
|
||||||
# https://docs.linuxserver.io/general/understanding-puid-and-pgid
|
# https://docs.linuxserver.io/general/understanding-puid-and-pgid
|
||||||
|
|
||||||
# Install system apt dependencies (adding backports to access more recent apt updates)
|
# Install system apt dependencies (adding backports to access more recent apt updates)
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=private \
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=apt-$TARGETARCH$TARGETVARIANT \
|
||||||
echo "[+] Installing APT base system dependencies for $TARGETPLATFORM..." \
|
echo "[+] Installing APT base system dependencies for $TARGETPLATFORM..." \
|
||||||
&& echo 'deb https://deb.debian.org/debian bookworm-backports main contrib non-free' >> /etc/apt/sources.list.d/backports.list \
|
&& echo 'deb https://deb.debian.org/debian bookworm-backports main contrib non-free' >> /etc/apt/sources.list.d/backports.list \
|
||||||
&& mkdir -p /etc/apt/keyrings \
|
&& mkdir -p /etc/apt/keyrings \
|
||||||
|
@ -120,7 +120,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=private \
|
||||||
######### Language Environments ####################################
|
######### Language Environments ####################################
|
||||||
|
|
||||||
# Install Node environment
|
# Install Node environment
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,target=/root/.npm,sharing=private \
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=apt-$TARGETARCH$TARGETVARIANT --mount=type=cache,target=/root/.npm,sharing=locked,id=npm-$TARGETARCH$TARGETVARIANT \
|
||||||
echo "[+] Installing Node $NODE_VERSION environment in $NODE_MODULES..." \
|
echo "[+] Installing Node $NODE_VERSION environment in $NODE_MODULES..." \
|
||||||
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" >> /etc/apt/sources.list.d/nodejs.list \
|
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" >> /etc/apt/sources.list.d/nodejs.list \
|
||||||
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
|
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
|
||||||
|
@ -138,7 +138,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,
|
||||||
) | tee -a /VERSION.txt
|
) | tee -a /VERSION.txt
|
||||||
|
|
||||||
# Install Python environment
|
# Install Python environment
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,target=/root/.cache/pip,sharing=private \
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=apt-$TARGETARCH$TARGETVARIANT --mount=type=cache,target=/root/.cache/pip,sharing=locked,id=pip-$TARGETARCH$TARGETVARIANT \
|
||||||
echo "[+] Setting up Python $PYTHON_VERSION runtime..." \
|
echo "[+] Setting up Python $PYTHON_VERSION runtime..." \
|
||||||
# tell PDM to allow using global system python site packages
|
# tell PDM to allow using global system python site packages
|
||||||
# && rm /usr/lib/python3*/EXTERNALLY-MANAGED \
|
# && rm /usr/lib/python3*/EXTERNALLY-MANAGED \
|
||||||
|
@ -147,7 +147,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,
|
||||||
# && python3 -m venv --system-site-packages $GLOBAL_VENV \
|
# && python3 -m venv --system-site-packages $GLOBAL_VENV \
|
||||||
# && python3 -m venv $GLOBAL_VENV \
|
# && python3 -m venv $GLOBAL_VENV \
|
||||||
# install global dependencies / python build dependencies in GLOBAL_VENV
|
# install global dependencies / python build dependencies in GLOBAL_VENV
|
||||||
&& pip install --upgrade pip setuptools wheel \
|
# && pip install --upgrade pip setuptools wheel \
|
||||||
# Save version info
|
# Save version info
|
||||||
&& ( \
|
&& ( \
|
||||||
which python3 && python3 --version | grep " $PYTHON_VERSION" \
|
which python3 && python3 --version | grep " $PYTHON_VERSION" \
|
||||||
|
@ -159,7 +159,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,
|
||||||
######### Extractor Dependencies ##################################
|
######### Extractor Dependencies ##################################
|
||||||
|
|
||||||
# Install apt dependencies
|
# Install apt dependencies
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,target=/root/.cache/pip,sharing=private \
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=apt-$TARGETARCH$TARGETVARIANT --mount=type=cache,target=/root/.cache/pip,sharing=locked,id=pip-$TARGETARCH$TARGETVARIANT \
|
||||||
echo "[+] Installing APT extractor dependencies globally using apt..." \
|
echo "[+] Installing APT extractor dependencies globally using apt..." \
|
||||||
&& apt-get update -qq \
|
&& apt-get update -qq \
|
||||||
&& apt-get install -qq -y -t bookworm-backports --no-install-recommends \
|
&& apt-get install -qq -y -t bookworm-backports --no-install-recommends \
|
||||||
|
@ -179,7 +179,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,
|
||||||
) | tee -a /VERSION.txt
|
) | tee -a /VERSION.txt
|
||||||
|
|
||||||
# Install chromium browser using playwright
|
# Install chromium browser using playwright
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,target=/root/.cache/pip,sharing=private --mount=type=cache,target=/root/.cache/ms-playwright \
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=apt-$TARGETARCH$TARGETVARIANT --mount=type=cache,target=/root/.cache/pip,sharing=locked,id=pip-$TARGETARCH$TARGETVARIANT --mount=type=cache,target=/root/.cache/ms-playwright,sharing=locked,id=browsers-$TARGETARCH$TARGETVARIANT \
|
||||||
echo "[+] Installing Browser binary dependencies to $PLAYWRIGHT_BROWSERS_PATH..." \
|
echo "[+] Installing Browser binary dependencies to $PLAYWRIGHT_BROWSERS_PATH..." \
|
||||||
&& apt-get update -qq \
|
&& apt-get update -qq \
|
||||||
&& if [[ "$TARGETPLATFORM" == *amd64* || "$TARGETPLATFORM" == *arm64* ]]; then \
|
&& if [[ "$TARGETPLATFORM" == *amd64* || "$TARGETPLATFORM" == *arm64* ]]; then \
|
||||||
|
@ -207,7 +207,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,
|
||||||
# Install Node dependencies
|
# Install Node dependencies
|
||||||
WORKDIR "$CODE_DIR"
|
WORKDIR "$CODE_DIR"
|
||||||
COPY --chown=root:root --chmod=755 "package.json" "package-lock.json" "$CODE_DIR/"
|
COPY --chown=root:root --chmod=755 "package.json" "package-lock.json" "$CODE_DIR/"
|
||||||
RUN --mount=type=cache,target=/root/.npm,sharing=private \
|
RUN --mount=type=cache,target=/root/.npm,sharing=locked,id=npm-$TARGETARCH$TARGETVARIANT \
|
||||||
echo "[+] Installing NPM extractor dependencies from package.json into $NODE_MODULES..." \
|
echo "[+] Installing NPM extractor dependencies from package.json into $NODE_MODULES..." \
|
||||||
&& npm ci --prefer-offline --no-audit --cache /root/.npm \
|
&& npm ci --prefer-offline --no-audit --cache /root/.npm \
|
||||||
&& ( \
|
&& ( \
|
||||||
|
@ -221,7 +221,7 @@ RUN --mount=type=cache,target=/root/.npm,sharing=private \
|
||||||
# Install ArchiveBox Python dependencies
|
# Install ArchiveBox Python dependencies
|
||||||
WORKDIR "$CODE_DIR"
|
WORKDIR "$CODE_DIR"
|
||||||
COPY --chown=root:root --chmod=755 "./pyproject.toml" "requirements.txt" "$CODE_DIR/"
|
COPY --chown=root:root --chmod=755 "./pyproject.toml" "requirements.txt" "$CODE_DIR/"
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,target=/root/.cache/pip,sharing=private \
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=apt-$TARGETARCH$TARGETVARIANT --mount=type=cache,target=/root/.cache/pip,sharing=locked,id=pip-$TARGETARCH$TARGETVARIANT \
|
||||||
echo "[+] Installing PIP ArchiveBox dependencies from requirements.txt for ${TARGETPLATFORM}..." \
|
echo "[+] Installing PIP ArchiveBox dependencies from requirements.txt for ${TARGETPLATFORM}..." \
|
||||||
&& apt-get update -qq \
|
&& apt-get update -qq \
|
||||||
&& apt-get install -qq -y -t bookworm-backports --no-install-recommends \
|
&& apt-get install -qq -y -t bookworm-backports --no-install-recommends \
|
||||||
|
@ -243,7 +243,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,
|
||||||
|
|
||||||
# Install ArchiveBox Python package from source
|
# Install ArchiveBox Python package from source
|
||||||
COPY --chown=root:root --chmod=755 "." "$CODE_DIR/"
|
COPY --chown=root:root --chmod=755 "." "$CODE_DIR/"
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=private --mount=type=cache,target=/root/.cache/pip,sharing=private \
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=apt-$TARGETARCH$TARGETVARIANT --mount=type=cache,target=/root/.cache/pip,sharing=locked,id=pip-$TARGETARCH$TARGETVARIANT \
|
||||||
echo "[*] Installing PIP ArchiveBox package from $CODE_DIR..." \
|
echo "[*] Installing PIP ArchiveBox package from $CODE_DIR..." \
|
||||||
&& apt-get update -qq \
|
&& apt-get update -qq \
|
||||||
# install C compiler to build deps on platforms that dont have 32-bit wheels available on pypi
|
# install C compiler to build deps on platforms that dont have 32-bit wheels available on pypi
|
||||||
|
|
|
@ -11,16 +11,35 @@ set -o pipefail
|
||||||
IFS=$'\n'
|
IFS=$'\n'
|
||||||
|
|
||||||
REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )"
|
REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && cd .. && pwd )"
|
||||||
VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")"
|
|
||||||
SHORT_VERSION="$(echo "$VERSION" | perl -pe 's/(\d+)\.(\d+)\.(\d+)/$1.$2/g')"
|
|
||||||
cd "$REPO_DIR"
|
cd "$REPO_DIR"
|
||||||
|
|
||||||
echo "[*] Logging in to Docker Hub & Github Container Registry"
|
SUPPORTED_PLATFORMS="linux/amd64,linux/arm64,linux/arm/v7"
|
||||||
docker login --username=nikisweeting
|
|
||||||
docker login docker.pkg.github.com --username=pirate
|
TAG_NAME="${1:-$(git rev-parse --abbrev-ref HEAD)}"
|
||||||
|
VERSION="$(jq -r '.version' < "$REPO_DIR/package.json")"
|
||||||
|
SHORT_VERSION="$(echo "$VERSION" | perl -pe 's/(\d+)\.(\d+)\.(\d+)/$1.$2/g')"
|
||||||
|
SELECTED_PLATFORMS="${2:-$SUPPORTED_PLATFORMS}"
|
||||||
|
|
||||||
|
|
||||||
|
# echo "[*] Logging in to Docker Hub & Github Container Registry"
|
||||||
|
# docker login --username=nikisweeting
|
||||||
|
# docker login ghcr.io --username=pirate
|
||||||
|
|
||||||
|
echo "[^] Building docker image"
|
||||||
|
./bin/build_docker.sh "$TAG_NAME" "$SELECTED_PLATFORMS"
|
||||||
|
|
||||||
echo "[^] Uploading docker image"
|
echo "[^] Uploading docker image"
|
||||||
docker push archivebox/archivebox:$VERSION archivebox/archivebox:$SHORT_VERSION archivebox/archivebox:latest
|
docker buildx build --platform "$SELECTED_PLATFORMS" --push . \
|
||||||
docker push docker.io/nikisweeting/archivebox
|
-t archivebox/archivebox \
|
||||||
docker push docker.io/archivebox/archivebox
|
-t archivebox/archivebox:$TAG_NAME \
|
||||||
docker push docker.pkg.github.com/archivebox/archivebox/archivebox
|
-t archivebox/archivebox:$VERSION \
|
||||||
|
-t archivebox/archivebox:$SHORT_VERSION \
|
||||||
|
-t archivebox/archivebox:latest \
|
||||||
|
-t nikisweeting/archivebox \
|
||||||
|
-t nikisweeting/archivebox:$TAG_NAME \
|
||||||
|
-t nikisweeting/archivebox:$VERSION \
|
||||||
|
-t nikisweeting/archivebox:$SHORT_VERSION \
|
||||||
|
-t nikisweeting/archivebox:latest \
|
||||||
|
-t ghcr.io/archivebox/archivebox/archivebox:$TAG_NAME \
|
||||||
|
-t ghcr.io/archivebox/archivebox/archivebox:$VERSION \
|
||||||
|
-t ghcr.io/archivebox/archivebox/archivebox:$SHORT_VERSION
|
Loading…
Reference in a new issue