b2b2ed13aa
Build and Deploy Verso / deploy (push) Successful in 10m56s
Quarto resolves its cache dir as $HOME/.cache/quarto. The process runs as www-data (home=/var/www) but that directory is root-owned, so Quarto crashed immediately with PermissionDenied on mkdir. Pre-create the cache dir and chown it to www-data at image build time. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
57 lines
2.8 KiB
Plaintext
57 lines
2.8 KiB
Plaintext
# --------------------------------------------------
|
|
# Overleaf Base Image (sharelatex/sharelatex-base)
|
|
# --------------------------------------------------
|
|
|
|
FROM phusion/baseimage:noble-1.0.3
|
|
|
|
# Update to ensure dependencies are updated
|
|
# ------------------------------------------
|
|
ENV REBUILT_AFTER="2026-05-21"
|
|
|
|
# Install dependencies
|
|
# --------------------
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
# Technically, we are using potentially stale package-lists with the below line.
|
|
# Practically, apt refreshes the lists as needed and release builds run in fresh CI VMs without the cache.
|
|
--mount=type=cache,target=/var/lib/apt/lists,sharing=locked true \
|
|
# Enable caching: https://docs.docker.com/reference/dockerfile/#example-cache-apt-packages
|
|
&& rm -f /etc/apt/apt.conf.d/docker-clean && echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache \
|
|
&& apt-get update \
|
|
&& apt-get install -y \
|
|
unattended-upgrades \
|
|
build-essential wget net-tools unzip time poppler-utils optipng strace nginx git python3 python-is-python3 zlib1g-dev libpcre3-dev gettext-base libwww-perl ca-certificates curl gnupg \
|
|
qpdf \
|
|
# upgrade base-image, batch all the upgrades together, rather than installing them on-by-one (which is slow!)
|
|
&& unattended-upgrade --verbose --no-minimal-upgrade-steps \
|
|
# install Node.js https://github.com/nodesource/distributions#nodejs
|
|
&& mkdir -p /etc/apt/keyrings \
|
|
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
|
|
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
|
|
&& apt-get update \
|
|
&& apt-get install -y nodejs \
|
|
\
|
|
&& rm -rf \
|
|
# We are adding a custom nginx config in the main Dockerfile.
|
|
/etc/nginx/nginx.conf \
|
|
/etc/nginx/sites-enabled/default
|
|
|
|
# Install Quarto (bundles Typst for PDF rendering — no LaTeX needed)
|
|
# ------------------------------------------------------------------
|
|
ARG QUARTO_VERSION=1.6.39
|
|
RUN curl -fsSL "https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-amd64.deb" -o /tmp/quarto.deb \
|
|
&& dpkg -i /tmp/quarto.deb \
|
|
&& rm /tmp/quarto.deb \
|
|
&& mkdir -p /var/www/.cache/quarto \
|
|
&& chown -R www-data:www-data /var/www/.cache
|
|
|
|
|
|
# Set up overleaf user and home directory
|
|
# -----------------------------------------
|
|
RUN adduser --system --group --home /overleaf --no-create-home overleaf && \
|
|
mkdir -p /var/lib/overleaf && \
|
|
chown www-data:www-data /var/lib/overleaf && \
|
|
mkdir -p /var/log/overleaf && \
|
|
chown www-data:www-data /var/log/overleaf && \
|
|
mkdir -p /var/lib/overleaf/data/template_files && \
|
|
chown www-data:www-data /var/lib/overleaf/data/template_files
|