From 92a2fd384c2f797227abc8064ed72257c16b6a72 Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Tue, 3 Mar 2026 15:10:33 -0500 Subject: [PATCH 01/10] feat: contribute Debian Dockerfile --- README.md | 48 ++++++++++++++++++--------------- debian/Dockerfile | 68 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 22 deletions(-) create mode 100644 debian/Dockerfile diff --git a/README.md b/README.md index 2911350..cc5598d 100644 --- a/README.md +++ b/README.md @@ -2,46 +2,50 @@ [![Build Status](https://github.com/inveniosoftware/docker-invenio/workflows/CI/badge.svg)](https://github.com/inveniosoftware/docker-invenio/actions) -This image serves as base image, usable in production environments like Kubernetes or OpenShift, for: +This repository defines the Dockerfiles for the foundational Docker images usable in production environments like Kubernetes or OpenShift for any Invenio-based app: * [InvenioRDM](https://github.com/inveniosoftware/invenio-app-rdm) * [InvenioILS](https://github.com/inveniosoftware/invenio-app-ils) * [Invenio](https://github.com/inveniosoftware/invenio) -Previous images, still available in this repository for reference only, were based on `CentOS`: after the [shift from CentOS to CentOS Stream](https://blog.centos.org/2020/12/future-is-centos-stream/), the main image is now based on [AlmaLinux](https://almalinux.org/), a free alternative downstream rebuild of Red Hat Enterprise Edition. +## Provided images + +The provided images are the ones supported by CERN and/or an Invenio partner organization. -The [current image](almalinux/Dockerfile) is based on the AlmaLinux version 9 and contains: +| Operating System | Dockerfile FROM | Supporting organization | +| ----------------- | ------------------------------------------------- | ---------------------------------------------------------- | +| AlmaLinux - v9 | FROM registry.cern.ch/inveniosoftware/almalinux:1 | CERN (@ntarocco) | +| Debian - bookworm | FROM TBD | Northwestern University (@fenekku), Frontmatter (@mfenner) | +| | | | -- Python v3.9 set as default Python interpreter with upgraded versions of pip, pipenv, setuptools and wheel. -- Node.js v22.x -- Working directory for an Invenio instance. +All images provide a common baseline of: +- Python version +- Node and NPM version +- development headers for all Invenio dependencies +- "invenio" user with uid 1000 +- /opt/invenio/ working directory and appropriate subdirectories -Images are currently published in the CERN registry `registry.cern.ch`. +Previous images, still available in this repository for reference only, were based on `CentOS`: after the [shift from CentOS to CentOS Stream](https://blog.centos.org/2020/12/future-is-centos-stream/), the main image is now based on [AlmaLinux](https://almalinux.org/), a free alternative downstream rebuild of Red Hat Enterprise Edition. ## Usage ### Create a ``Dockerfile`` -A simple ``Dockerfile`` using this base image could look like this: +Your own simple ``Dockerfile`` using one of the base image would look like this: -``` -FROM registry.cern.ch/inveniosoftware/almalinux:latest +```dockerfile +# Select the FROM line, you want. For AlmaLinux, it would be: +FROM registry.cern.ch/inveniosoftware/almalinux:1 ``` -### Rolling builds +### Build and run the Docker image -The images are rebuilt when the base images are updated. The base image are receiving regular monthly -updates as well as emergency fixes. +To test the Docker image locally, you can build it and run it by doing: -### Local builds - -To test the Dockerimage locally, you can build it and run it by doing: - -``` -cd almalinux -docker build . -t almalinux:1 -docker run -it almalinux:1 /bin/bash +```bash +docker build . -t my-image:1 +docker run -it my-image:1 /bin/bash ``` ## Optimization -You can use a tool like [dive](https://github.com/wagoodman/dive) to explore the layers of the Docker images and optimize it. +You can use a tool like [dive](https://github.com/wagoodman/dive) to explore the layers of the Docker images and optimize it in your own Dockerfile. diff --git a/debian/Dockerfile b/debian/Dockerfile new file mode 100644 index 0000000..efaf733 --- /dev/null +++ b/debian/Dockerfile @@ -0,0 +1,68 @@ +# +# Copyright (C) 2025 Northwestern University. +# +# Invenio is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# + + +ARG BUILD_PLATFORM=linux/amd64 +ARG PYTHON_VERSION=3.11 +ARG OS_VERSION=bookworm +ARG NODE_VERSION=22 + +FROM --platform=${BUILD_PLATFORM} python:${PYTHON_VERSION}-${OS_VERSION} + +LABEL org.opencontainers.image.source=https://github.com/inveniosoftware/docker-invenio + +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + gcc \ + locales + +RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + +ENV LANG=en_US.UTF-8 +ENV LANGUAGE=en_US:en +ENV LC_ALL=en_US.UTF-8 + +RUN apt-get install -y --no-install-recommends \ + build-essential \ + fonts-dejavu \ + imagemagick \ + libbz2-dev \ + libcairo2 \ + libffi-dev \ + liblzma-dev \ + libpq-dev \ + libssl-dev \ + libsqlite3-dev \ + libxml2-dev \ + libxslt1-dev + +RUN pip install --upgrade pip pipenv wheel + +# Install Node.js +RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - && \ + apt-get install -y nodejs npm + +# Create working directory +ENV WORKING_DIR=/opt/invenio +ENV INVENIO_INSTANCE_PATH=${WORKING_DIR}/var/instance + +# Create files mountpoints +RUN mkdir -p \ + ${WORKING_DIR}/src \ + ${INVENIO_INSTANCE_PATH}/data \ + ${INVENIO_INSTANCE_PATH}/archive \ + ${INVENIO_INSTANCE_PATH}/static + +# Invenio file will be in /src +WORKDIR ${WORKING_DIR}/src + +# Set folder permissions +ENV INVENIO_USER_ID=1000 +RUN chgrp -R 0 ${WORKING_DIR} && \ + chmod -R g=u ${WORKING_DIR} && \ + useradd invenio --uid ${INVENIO_USER_ID} --gid 0 && \ + chown -R invenio:root ${WORKING_DIR} From 1a30bca07b6b67a38e6c1c29ee0a5c0e67b76ae6 Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Tue, 3 Mar 2026 15:10:59 -0500 Subject: [PATCH 02/10] feat: add dependabot checking --- .github/dependabot.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..619b6b2 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2025 Northwestern University. +# +# Documentation: https://docs.github.com/en/code-security/dependabot + +version: 2 +updates: + + # Enable version updates for GitHub actions + - package-ecosystem: "github-actions" + # Exception as per documentation: "/" means to look for any files in `.github/workfows/` + directory: "/" + # Check for updates once a week on Monday + schedule: + interval: "weekly" From fe4579b5f9f9546110da627db0ebdabd14421a4a Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Wed, 4 Mar 2026 09:41:49 -0500 Subject: [PATCH 03/10] feat: move to trixie 3.14 + update README --- README.md | 3 ++- debian/Dockerfile | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cc5598d..ac296f1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@ [![Build Status](https://github.com/inveniosoftware/docker-invenio/workflows/CI/badge.svg)](https://github.com/inveniosoftware/docker-invenio/actions) -This repository defines the Dockerfiles for the foundational Docker images usable in production environments like Kubernetes or OpenShift for any Invenio-based app: +This repository defines the Dockerfiles for the foundational Docker images usable in production environments like Docker Compose, Kubernetes, OpenShift, or other container orchestrator. +These Dockerfiles are for any Invenio-based app: * [InvenioRDM](https://github.com/inveniosoftware/invenio-app-rdm) * [InvenioILS](https://github.com/inveniosoftware/invenio-app-ils) * [Invenio](https://github.com/inveniosoftware/invenio) diff --git a/debian/Dockerfile b/debian/Dockerfile index efaf733..fa39d13 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -7,8 +7,8 @@ ARG BUILD_PLATFORM=linux/amd64 -ARG PYTHON_VERSION=3.11 -ARG OS_VERSION=bookworm +ARG PYTHON_VERSION=3.14 +ARG OS_VERSION=trixie ARG NODE_VERSION=22 FROM --platform=${BUILD_PLATFORM} python:${PYTHON_VERSION}-${OS_VERSION} From 0148bde594ec2fed9a68168811913e92aecec430 Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Thu, 5 Mar 2026 11:54:48 -0500 Subject: [PATCH 04/10] feat: improve efficiency via cache mounts and size via apt-get install grouping --- debian/Dockerfile | 66 ++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/debian/Dockerfile b/debian/Dockerfile index fa39d13..8c39094 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -1,3 +1,5 @@ +# syntax=docker/dockerfile:1 + # # Copyright (C) 2025 Northwestern University. # @@ -5,7 +7,6 @@ # under the terms of the MIT License; see LICENSE file for more details. # - ARG BUILD_PLATFORM=linux/amd64 ARG PYTHON_VERSION=3.14 ARG OS_VERSION=trixie @@ -15,42 +16,47 @@ FROM --platform=${BUILD_PLATFORM} python:${PYTHON_VERSION}-${OS_VERSION} LABEL org.opencontainers.image.source=https://github.com/inveniosoftware/docker-invenio -RUN apt-get update && apt-get install -y --no-install-recommends \ - git \ - gcc \ - locales +RUN \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,target=/var/lib/apt,sharing=locked \ + apt-get update \ + && \ + # Install dependencies + apt-get install --yes --no-install-recommends \ + git \ + gcc \ + locales \ + build-essential \ + fonts-dejavu \ + imagemagick \ + libbz2-dev \ + libcairo2 \ + libffi-dev \ + liblzma-dev \ + libpq-dev \ + libssl-dev \ + libsqlite3-dev \ + libxml2-dev \ + libxslt1-dev \ + && \ + # Install Node.js + curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - \ + && \ + apt-get install --yes --no-install-recommends nodejs npm +# Set locale RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 +ENV \ + LANG=en_US.UTF-8 \ + LANGUAGE=en_US:en \ + LC_ALL=en_US.UTF-8 -ENV LANG=en_US.UTF-8 -ENV LANGUAGE=en_US:en -ENV LC_ALL=en_US.UTF-8 - -RUN apt-get install -y --no-install-recommends \ - build-essential \ - fonts-dejavu \ - imagemagick \ - libbz2-dev \ - libcairo2 \ - libffi-dev \ - liblzma-dev \ - libpq-dev \ - libssl-dev \ - libsqlite3-dev \ - libxml2-dev \ - libxslt1-dev - +# Install/update Python tooling RUN pip install --upgrade pip pipenv wheel -# Install Node.js -RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - && \ - apt-get install -y nodejs npm - -# Create working directory +# Create relevant application directories ENV WORKING_DIR=/opt/invenio ENV INVENIO_INSTANCE_PATH=${WORKING_DIR}/var/instance - -# Create files mountpoints RUN mkdir -p \ ${WORKING_DIR}/src \ ${INVENIO_INSTANCE_PATH}/data \ From 9f78c76ed6e08d5c373e4d654ade227be9975ee7 Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Thu, 26 Mar 2026 15:29:06 -0400 Subject: [PATCH 05/10] feat(debian): run more stable steps first --- debian/Dockerfile | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/debian/Dockerfile b/debian/Dockerfile index 8c39094..104c4b7 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -1,7 +1,8 @@ # syntax=docker/dockerfile:1 # -# Copyright (C) 2025 Northwestern University. +# Copyright (C) 2026 Northwestern University. +# Copyright (C) 2026 Frontmatter. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -16,6 +17,27 @@ FROM --platform=${BUILD_PLATFORM} python:${PYTHON_VERSION}-${OS_VERSION} LABEL org.opencontainers.image.source=https://github.com/inveniosoftware/docker-invenio +# Create relevant application directories +ENV \ + WORKING_DIR=/opt/invenio \ + INVENIO_INSTANCE_PATH=/opt/invenio/var/instance \ + INVENIO_USER_ID=1000 + +RUN mkdir -p \ + ${WORKING_DIR}/src \ + ${INVENIO_INSTANCE_PATH}/data \ + ${INVENIO_INSTANCE_PATH}/archive \ + ${INVENIO_INSTANCE_PATH}/static + +# Invenio file will be in /src +WORKDIR ${WORKING_DIR}/src + +# Set folder permissions +RUN chgrp -R 0 ${WORKING_DIR} && \ + chmod -R g=u ${WORKING_DIR} && \ + useradd invenio --uid ${INVENIO_USER_ID} --gid 0 && \ + chown -R invenio:root ${WORKING_DIR} + RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ @@ -53,22 +75,3 @@ ENV \ # Install/update Python tooling RUN pip install --upgrade pip pipenv wheel - -# Create relevant application directories -ENV WORKING_DIR=/opt/invenio -ENV INVENIO_INSTANCE_PATH=${WORKING_DIR}/var/instance -RUN mkdir -p \ - ${WORKING_DIR}/src \ - ${INVENIO_INSTANCE_PATH}/data \ - ${INVENIO_INSTANCE_PATH}/archive \ - ${INVENIO_INSTANCE_PATH}/static - -# Invenio file will be in /src -WORKDIR ${WORKING_DIR}/src - -# Set folder permissions -ENV INVENIO_USER_ID=1000 -RUN chgrp -R 0 ${WORKING_DIR} && \ - chmod -R g=u ${WORKING_DIR} && \ - useradd invenio --uid ${INVENIO_USER_ID} --gid 0 && \ - chown -R invenio:root ${WORKING_DIR} From 500d95997eedcff73b37f1297ee145c7f9140c6b Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Fri, 27 Mar 2026 11:53:29 -0400 Subject: [PATCH 06/10] feat(debian): add curl+certificates and setup uv --- README.md | 2 +- debian/Dockerfile | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ac296f1..e8137c8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://github.com/inveniosoftware/docker-invenio/workflows/CI/badge.svg)](https://github.com/inveniosoftware/docker-invenio/actions) -This repository defines the Dockerfiles for the foundational Docker images usable in production environments like Docker Compose, Kubernetes, OpenShift, or other container orchestrator. +This repository defines the Dockerfiles for the foundational Docker images usable in production environments like Docker Compose, Kubernetes, OpenShift, or other container orchestrators. These Dockerfiles are for any Invenio-based app: * [InvenioRDM](https://github.com/inveniosoftware/invenio-app-rdm) * [InvenioILS](https://github.com/inveniosoftware/invenio-app-ils) diff --git a/debian/Dockerfile b/debian/Dockerfile index 104c4b7..26c3115 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -3,6 +3,7 @@ # # Copyright (C) 2026 Northwestern University. # Copyright (C) 2026 Frontmatter. +# Copyright (C) 2026 KTH Royal Institute of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -17,12 +18,12 @@ FROM --platform=${BUILD_PLATFORM} python:${PYTHON_VERSION}-${OS_VERSION} LABEL org.opencontainers.image.source=https://github.com/inveniosoftware/docker-invenio -# Create relevant application directories ENV \ WORKING_DIR=/opt/invenio \ INVENIO_INSTANCE_PATH=/opt/invenio/var/instance \ INVENIO_USER_ID=1000 +# Create relevant application directories RUN mkdir -p \ ${WORKING_DIR}/src \ ${INVENIO_INSTANCE_PATH}/data \ @@ -38,6 +39,10 @@ RUN chgrp -R 0 ${WORKING_DIR} && \ useradd invenio --uid ${INVENIO_USER_ID} --gid 0 && \ chown -R invenio:root ${WORKING_DIR} +# Install system dependencies +# The --mount=type=cache helps cache local builds and +# will only yield a benefit to a CI if the CI also +# preserves filesystem between runs RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ @@ -45,12 +50,13 @@ RUN \ && \ # Install dependencies apt-get install --yes --no-install-recommends \ - git \ - gcc \ - locales \ build-essential \ + ca-certificates \ + curl \ fonts-dejavu \ imagemagick \ + gcc \ + git \ libbz2-dev \ libcairo2 \ libffi-dev \ @@ -60,12 +66,18 @@ RUN \ libsqlite3-dev \ libxml2-dev \ libxslt1-dev \ + locales \ && \ # Install Node.js curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - \ && \ apt-get install --yes --no-install-recommends nodejs npm +# Setup uv +# From https://docs.astral.sh/uv/guides/integration/docker/ +# but using docker.io/astral/uv because failure to fetch oauth token +COPY --from=docker.io/astral/uv:latest /uv /uvx /bin/ + # Set locale RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 ENV \ @@ -74,4 +86,4 @@ ENV \ LC_ALL=en_US.UTF-8 # Install/update Python tooling -RUN pip install --upgrade pip pipenv wheel +RUN pip install --upgrade pip wheel From 1e8946e1176f1214b27a182b8cf3083cd09a3410 Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Mon, 30 Mar 2026 11:32:32 -0400 Subject: [PATCH 07/10] feat(debian): add pnpm --- .github/dependabot.yml | 4 ++-- debian/Dockerfile | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 619b6b2..9d0161a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2025 Northwestern University. +# Copyright (C) 2026 Northwestern University. # # Documentation: https://docs.github.com/en/code-security/dependabot @@ -9,7 +9,7 @@ updates: # Enable version updates for GitHub actions - package-ecosystem: "github-actions" - # Exception as per documentation: "/" means to look for any files in `.github/workfows/` + # Exception as per documentation: "/" means to look for any files in `.github/workflows/` directory: "/" # Check for updates once a week on Monday schedule: diff --git a/debian/Dockerfile b/debian/Dockerfile index 26c3115..4e74107 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -68,10 +68,12 @@ RUN \ libxslt1-dev \ locales \ && \ - # Install Node.js + # Install Node.js, npm, pnpm curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - \ && \ - apt-get install --yes --no-install-recommends nodejs npm + apt-get install --yes --no-install-recommends nodejs npm \ + && \ + npm install -g pnpm@latest-10 # Setup uv # From https://docs.astral.sh/uv/guides/integration/docker/ @@ -84,6 +86,3 @@ ENV \ LANG=en_US.UTF-8 \ LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 - -# Install/update Python tooling -RUN pip install --upgrade pip wheel From 333d7bd94ed8767ba1fdc0cacd42e2411941c0f4 Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Tue, 31 Mar 2026 13:00:25 -0400 Subject: [PATCH 08/10] feat(debian): apply various improvements - [x] trixie in README - [x] node 24 - [x] pinned uv to 0.11 for compromize btw automatically getting patches and stability --- README.md | 14 +++++++------- debian/Dockerfile | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e8137c8..f33d365 100644 --- a/README.md +++ b/README.md @@ -12,15 +12,15 @@ These Dockerfiles are for any Invenio-based app: The provided images are the ones supported by CERN and/or an Invenio partner organization. -| Operating System | Dockerfile FROM | Supporting organization | -| ----------------- | ------------------------------------------------- | ---------------------------------------------------------- | -| AlmaLinux - v9 | FROM registry.cern.ch/inveniosoftware/almalinux:1 | CERN (@ntarocco) | -| Debian - bookworm | FROM TBD | Northwestern University (@fenekku), Frontmatter (@mfenner) | -| | | | +| Operating System | Dockerfile FROM | Supporting organization | +| ---------------- | ------------------------------------------------- | ---------------------------------------------------------- | +| AlmaLinux - v9 | FROM registry.cern.ch/inveniosoftware/almalinux:1 | CERN (@ntarocco) | +| Debian - trixie | FROM TBD | Northwestern University (@fenekku), Frontmatter (@mfenner) | +| | | | All images provide a common baseline of: -- Python version -- Node and NPM version +- Python and uv versions +- Node, npm and pnpm version - development headers for all Invenio dependencies - "invenio" user with uid 1000 - /opt/invenio/ working directory and appropriate subdirectories diff --git a/debian/Dockerfile b/debian/Dockerfile index 4e74107..0e30c6e 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -12,7 +12,7 @@ ARG BUILD_PLATFORM=linux/amd64 ARG PYTHON_VERSION=3.14 ARG OS_VERSION=trixie -ARG NODE_VERSION=22 +ARG NODE_VERSION=24 FROM --platform=${BUILD_PLATFORM} python:${PYTHON_VERSION}-${OS_VERSION} @@ -78,7 +78,7 @@ RUN \ # Setup uv # From https://docs.astral.sh/uv/guides/integration/docker/ # but using docker.io/astral/uv because failure to fetch oauth token -COPY --from=docker.io/astral/uv:latest /uv /uvx /bin/ +COPY --from=docker.io/astral/uv:0.11 /uv /uvx /bin/ # Set locale RUN localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 From 67295efe394659b534600d6b2fe36bbc3661f877 Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Wed, 1 Apr 2026 09:30:15 -0400 Subject: [PATCH 09/10] feat(debian): consolidate system package installations --- debian/Dockerfile | 51 +++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/debian/Dockerfile b/debian/Dockerfile index 0e30c6e..b01c29b 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -40,39 +40,42 @@ RUN chgrp -R 0 ${WORKING_DIR} && \ chown -R invenio:root ${WORKING_DIR} # Install system dependencies -# The --mount=type=cache helps cache local builds and -# will only yield a benefit to a CI if the CI also -# preserves filesystem between runs +# The --mount=type=cache helps cache local builds and +# will only yield a benefit to a CI if the CI also +# preserves filesystem between runs +# +# InvenioRDM requires the following packages that Debian already provides +# ca-certificates +# curl +# gcc +# git +# imagemagick +# libbz2-dev +# libcairo2 +# libffi-dev +# liblzma-dev +# libpq-dev +# libssl-dev +# libsqlite3-dev +# libxml2-dev +# libxslt1-dev RUN \ --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ - apt-get update \ + apt-get update && apt-get upgrade --yes \ + && \ + # Install Node.js deb source + curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - \ && \ - # Install dependencies + # Install system dependencies apt-get install --yes --no-install-recommends \ build-essential \ - ca-certificates \ - curl \ fonts-dejavu \ - imagemagick \ - gcc \ - git \ - libbz2-dev \ - libcairo2 \ - libffi-dev \ - liblzma-dev \ - libpq-dev \ - libssl-dev \ - libsqlite3-dev \ - libxml2-dev \ - libxslt1-dev \ locales \ + nodejs \ + npm \ && \ - # Install Node.js, npm, pnpm - curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash - \ - && \ - apt-get install --yes --no-install-recommends nodejs npm \ - && \ + # Install pnpm npm install -g pnpm@latest-10 # Setup uv From af071189221bca98cd370019c68bdb2317ccf0e4 Mon Sep 17 00:00:00 2001 From: Guillaume Viger Date: Thu, 2 Apr 2026 09:29:59 -0400 Subject: [PATCH 10/10] feat: prefix PATH with uv virtualenv path Co-authored-by: Sam Arbid <36583694+Samk13@users.noreply.github.com> --- debian/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/Dockerfile b/debian/Dockerfile index b01c29b..5d02e9f 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -21,7 +21,8 @@ LABEL org.opencontainers.image.source=https://github.com/inveniosoftware/docker- ENV \ WORKING_DIR=/opt/invenio \ INVENIO_INSTANCE_PATH=/opt/invenio/var/instance \ - INVENIO_USER_ID=1000 + INVENIO_USER_ID=1000 \ + PATH=${WORKING_DIR}/src/.venv/bin:${PATH} # Create relevant application directories RUN mkdir -p \