mirror of
https://github.com/photoprism/photoprism.git
synced 2026-07-17 16:49:04 +00:00
Develop: Switch default base image to Ubuntu 26.04 LTS (Resolute) #5543
This commit is contained in:
parent
e759b234a5
commit
366bebddca
4 changed files with 129 additions and 14 deletions
|
|
@ -39,6 +39,7 @@ The CLI name is `photoprism` in production and public docs. Other binary names (
|
|||
|
||||
## Container Image Builds
|
||||
|
||||
- **Pin the dev `Dockerfile` `FROM` to a dated `photoprism/develop` tag, never the floating codename.** Use `photoprism/develop:<YYMMDD>-<codename>` (e.g. `photoprism/develop:260510-resolute`), not `photoprism/develop:resolute` / `:latest` / `:ubuntu`. The dated tag pins to a known-good build so a drive-by `docker pull` doesn't silently swap in a fresh base mid-session, and bumping the date in a commit gives developers + reviewers a visible signal that a new base image is available. The `buildx-multi.sh` script publishes both `:<codename>` and `:<YYMMDD>-<codename>` on every build — the dated one is the durable pointer. When you bump the base image, also update `Dockerfile`, the host `compose.yaml` (if it references the tag explicitly), and any docs that quote the current dev image.
|
||||
- **Never mix Debian and Ubuntu `apt` repositories in the same image:**
|
||||
- Don't add a Debian source to an Ubuntu base (or vice versa) to install a single missing package — the transitive deps drift, apt's solver pulls newer libraries from the foreign distro, and other build steps in the same `RUN` (e.g. `install-libheif.sh` running `apt-get install libavcodec-dev`) silently link against the wrong soname.
|
||||
- Symptoms surface much later as `dlopen: libfoo.so.N: cannot open shared object file` at image runtime, with the binary referencing a soname that exists only in the foreign distro.
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
# Ubuntu 25.10 (Questing Quokka)
|
||||
FROM photoprism/develop:260509-questing
|
||||
# Ubuntu 26.04 LTS (Resolute Raccoon)
|
||||
FROM photoprism/develop:260510-resolute
|
||||
|
||||
# Harden npm usage by default (applies to npm ci / install in dev container)
|
||||
ENV NPM_CONFIG_IGNORE_SCRIPTS=true
|
||||
|
||||
## Alternative Environments:
|
||||
# FROM photoprism/develop:questing # Ubuntu 25.10 (Questing Quokka)
|
||||
# FROM photoprism/develop:plucky # Ubuntu 25.04 (Plucky Puffin)
|
||||
# FROM photoprism/develop:armv7 # ARMv7 (32bit)
|
||||
# FROM photoprism/develop:oracular # Ubuntu 24.10 (Oracular Oriole)
|
||||
|
|
|
|||
36
Makefile
36
Makefile
|
|
@ -606,7 +606,7 @@ docker-develop: docker-develop-latest
|
|||
docker-develop-all: docker-develop-latest docker-develop-other
|
||||
docker-develop-latest: docker-develop-ubuntu
|
||||
docker-develop-debian: docker-develop-bookworm docker-develop-bookworm-slim
|
||||
docker-develop-ubuntu: docker-develop-questing docker-develop-questing-slim
|
||||
docker-develop-ubuntu: docker-develop-resolute docker-develop-resolute-slim
|
||||
docker-develop-legacy: docker-develop-jammy docker-develop-jammy-slim
|
||||
docker-develop-other: docker-develop-debian docker-develop-bullseye docker-develop-bullseye-slim docker-develop-buster
|
||||
docker-develop-bookworm:
|
||||
|
|
@ -698,7 +698,7 @@ docker-develop-plucky-slim:
|
|||
docker-develop-questing:
|
||||
docker pull --platform=amd64 ubuntu:questing
|
||||
docker pull --platform=arm64 ubuntu:questing
|
||||
scripts/docker/buildx-multi.sh develop linux/amd64,linux/arm64 questing /questing "-t photoprism/develop:latest -t photoprism/develop:ubuntu"
|
||||
scripts/docker/buildx-multi.sh develop linux/amd64,linux/arm64 questing /questing
|
||||
docker-develop-questing-slim:
|
||||
docker pull --platform=amd64 ubuntu:questing
|
||||
docker pull --platform=arm64 ubuntu:questing
|
||||
|
|
@ -706,7 +706,7 @@ docker-develop-questing-slim:
|
|||
docker-develop-resolute:
|
||||
docker pull --platform=amd64 ubuntu:resolute
|
||||
docker pull --platform=arm64 ubuntu:resolute
|
||||
scripts/docker/buildx-multi.sh develop linux/amd64,linux/arm64 resolute /resolute
|
||||
scripts/docker/buildx-multi.sh develop linux/amd64,linux/arm64 resolute /resolute "-t photoprism/develop:latest -t photoprism/develop:ubuntu"
|
||||
docker-develop-resolute-slim:
|
||||
docker pull --platform=amd64 ubuntu:resolute
|
||||
docker pull --platform=arm64 ubuntu:resolute
|
||||
|
|
@ -728,10 +728,10 @@ docker-unstable-mantic:
|
|||
preview: docker-preview-ce
|
||||
docker-preview: docker-preview-ce
|
||||
docker-preview-all: docker-preview-latest docker-preview-other
|
||||
docker-preview-ce: docker-preview-questing
|
||||
docker-preview-ce: docker-preview-resolute
|
||||
docker-preview-latest: docker-preview-ubuntu
|
||||
docker-preview-debian: docker-preview-bookworm
|
||||
docker-preview-ubuntu: docker-preview-questing
|
||||
docker-preview-ubuntu: docker-preview-resolute
|
||||
docker-preview-other: docker-preview-debian docker-preview-bullseye
|
||||
docker-preview-arm: docker-preview-arm64 docker-preview-armv7
|
||||
docker-preview-bookworm:
|
||||
|
|
@ -807,13 +807,19 @@ docker-preview-questing:
|
|||
docker pull --platform=amd64 photoprism/develop:questing-slim
|
||||
docker pull --platform=arm64 photoprism/develop:questing
|
||||
docker pull --platform=arm64 photoprism/develop:questing-slim
|
||||
scripts/docker/buildx-multi.sh photoprism linux/amd64,linux/arm64 preview-ce /questing
|
||||
scripts/docker/buildx-multi.sh photoprism linux/amd64,linux/arm64 preview-questing /questing
|
||||
docker-preview-resolute:
|
||||
docker pull --platform=amd64 photoprism/develop:resolute
|
||||
docker pull --platform=amd64 photoprism/develop:resolute-slim
|
||||
docker pull --platform=arm64 photoprism/develop:resolute
|
||||
docker pull --platform=arm64 photoprism/develop:resolute-slim
|
||||
scripts/docker/buildx-multi.sh photoprism linux/amd64,linux/arm64 preview-ce /resolute
|
||||
release: docker-release
|
||||
docker-release: docker-release-latest
|
||||
docker-release-all: docker-release-latest docker-release-other
|
||||
docker-release-latest: docker-release-ubuntu
|
||||
docker-release-debian: docker-release-bookworm
|
||||
docker-release-ubuntu: docker-release-questing
|
||||
docker-release-ubuntu: docker-release-resolute
|
||||
docker-release-other: docker-release-debian docker-release-bullseye
|
||||
docker-release-arm: docker-release-arm64 docker-release-armv7
|
||||
docker-release-bookworm:
|
||||
|
|
@ -889,7 +895,13 @@ docker-release-questing:
|
|||
docker pull --platform=amd64 photoprism/develop:questing-slim
|
||||
docker pull --platform=arm64 photoprism/develop:questing
|
||||
docker pull --platform=arm64 photoprism/develop:questing-slim
|
||||
scripts/docker/buildx-multi.sh photoprism linux/amd64,linux/arm64 ce /questing
|
||||
scripts/docker/buildx-multi.sh photoprism linux/amd64,linux/arm64 ce-questing /questing
|
||||
docker-release-resolute:
|
||||
docker pull --platform=amd64 photoprism/develop:resolute
|
||||
docker pull --platform=amd64 photoprism/develop:resolute-slim
|
||||
docker pull --platform=arm64 photoprism/develop:resolute
|
||||
docker pull --platform=arm64 photoprism/develop:resolute-slim
|
||||
scripts/docker/buildx-multi.sh photoprism linux/amd64,linux/arm64 ce /resolute
|
||||
start-traefik:
|
||||
$(DOCKER_COMPOSE) up -d --wait traefik
|
||||
stop-traefik:
|
||||
|
|
@ -936,12 +948,12 @@ terminal-preview:
|
|||
$(DOCKER_COMPOSE) -f compose.preview.yaml exec photoprism-preview bash
|
||||
logs-preview:
|
||||
$(DOCKER_COMPOSE) -f compose.preview.yaml logs -f photoprism-preview
|
||||
docker-local: docker-local-questing
|
||||
docker-local: docker-local-resolute
|
||||
docker-local-up:
|
||||
$(DOCKER_COMPOSE) -f compose.local.yaml up --force-recreate
|
||||
docker-local-down:
|
||||
$(DOCKER_COMPOSE) -f compose.local.yaml down --remove-orphans
|
||||
docker-local-all: docker-local-questing docker-local-plucky docker-local-oracular docker-local-noble docker-local-mantic docker-local-lunar docker-local-jammy docker-local-bookworm docker-local-bullseye docker-local-buster
|
||||
docker-local-all: docker-local-resolute docker-local-questing docker-local-plucky docker-local-oracular docker-local-noble docker-local-mantic docker-local-lunar docker-local-jammy docker-local-bookworm docker-local-bullseye docker-local-buster
|
||||
docker-local-bookworm:
|
||||
docker pull photoprism/develop:bookworm
|
||||
docker pull photoprism/develop:bookworm-slim
|
||||
|
|
@ -995,8 +1007,8 @@ docker-local-resolute:
|
|||
docker pull ubuntu:resolute
|
||||
scripts/docker/build.sh photoprism ce-resolute /resolute "-t photoprism/photoprism:local"
|
||||
local-develop: docker-local-develop
|
||||
docker-local-develop: docker-local-develop-questing
|
||||
docker-local-develop-all: docker-local-develop-questing docker-local-develop-oracular docker-local-develop-noble docker-local-develop-mantic docker-local-develop-lunar docker-local-develop-jammy docker-local-develop-bookworm docker-local-develop-bullseye docker-local-develop-buster docker-local-develop-impish
|
||||
docker-local-develop: docker-local-develop-resolute
|
||||
docker-local-develop-all: docker-local-develop-resolute docker-local-develop-questing docker-local-develop-oracular docker-local-develop-noble docker-local-develop-mantic docker-local-develop-lunar docker-local-develop-jammy docker-local-develop-bookworm docker-local-develop-bullseye docker-local-develop-buster docker-local-develop-impish
|
||||
docker-local-develop-bookworm:
|
||||
docker pull debian:bookworm-slim
|
||||
scripts/docker/build.sh develop bookworm /bookworm
|
||||
|
|
|
|||
101
docker/photoprism/resolute/Dockerfile
Normal file
101
docker/photoprism/resolute/Dockerfile
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
##################################################### BUILD STAGE ######################################################
|
||||
FROM photoprism/develop:resolute AS build
|
||||
|
||||
# Copyright © 2018 - 2025 PhotoPrism UG. All rights reserved.
|
||||
#
|
||||
# Questions? Email us at hello@photoprism.app or visit our website to learn
|
||||
# more about our team, products and services: https://www.photoprism.app/
|
||||
|
||||
# Declare build parameters.
|
||||
ARG TARGETARCH
|
||||
ARG TARGETPLATFORM
|
||||
ARG BUILD_TAG
|
||||
|
||||
# Copy source to image.
|
||||
WORKDIR "/go/src/github.com/photoprism/photoprism"
|
||||
COPY . .
|
||||
|
||||
# Build app.
|
||||
RUN make all install DESTDIR=/opt/photoprism
|
||||
|
||||
################################################## PRODUCTION STAGE ####################################################
|
||||
#### Base Image: Ubuntu 26.04 LTS (Resolute Raccoon)
|
||||
FROM photoprism/develop:resolute-slim
|
||||
|
||||
# Add Open Container Initiative (OCI) annotations.
|
||||
# See: https://github.com/opencontainers/image-spec/blob/main/annotations.md
|
||||
LABEL org.opencontainers.image.title="PhotoPrism® (Ubuntu 26.04 LTS)"
|
||||
LABEL org.opencontainers.image.description="Ubuntu 26.04 LTS (Resolute Raccoon)"
|
||||
LABEL org.opencontainers.image.url="https://hub.docker.com/r/photoprism/photoprism"
|
||||
LABEL org.opencontainers.image.source="https://github.com/photoprism/photoprism"
|
||||
LABEL org.opencontainers.image.documentation="https://docs.photoprism.app/getting-started/"
|
||||
LABEL org.opencontainers.image.authors="PhotoPrism UG <hello@photoprism.app>"
|
||||
LABEL org.opencontainers.image.vendor="PhotoPrism UG"
|
||||
|
||||
# Declare build parameters.
|
||||
ARG TARGETARCH
|
||||
ARG BUILD_TAG
|
||||
|
||||
# Set environment variables, see https://docs.photoprism.app/getting-started/config-options/.
|
||||
ENV DO_NOT_TRACK=true \
|
||||
PHOTOPRISM_ARCH=$TARGETARCH \
|
||||
DOCKER_TAG=$BUILD_TAG \
|
||||
DOCKER_ENV="prod" \
|
||||
TMPDIR="/tmp" \
|
||||
DEBIAN_FRONTEND="noninteractive" \
|
||||
TF_CPP_MIN_LOG_LEVEL=4 \
|
||||
TF_ENABLE_ONEDNN_OPTS=1 \
|
||||
MALLOC_ARENA_MAX=2 \
|
||||
PROG="photoprism" \
|
||||
PHOTOPRISM_ASSETS_PATH="/opt/photoprism/assets" \
|
||||
PHOTOPRISM_IMPORT_PATH="/photoprism/import" \
|
||||
PHOTOPRISM_ORIGINALS_PATH="/photoprism/originals" \
|
||||
PHOTOPRISM_STORAGE_PATH="/photoprism/storage" \
|
||||
PHOTOPRISM_BACKUP_PATH="/photoprism/storage/backups" \
|
||||
PHOTOPRISM_LOG_FILENAME="/photoprism/storage/photoprism.log" \
|
||||
PHOTOPRISM_PID_FILENAME="/photoprism/storage/photoprism.pid" \
|
||||
PHOTOPRISM_DEBUG="false" \
|
||||
PHOTOPRISM_PUBLIC="false" \
|
||||
PHOTOPRISM_READONLY="false" \
|
||||
PHOTOPRISM_UPLOAD_NSFW="true" \
|
||||
PHOTOPRISM_DETECT_NSFW="false" \
|
||||
PHOTOPRISM_EXPERIMENTAL="false" \
|
||||
PHOTOPRISM_SITE_URL="http://localhost:2342/" \
|
||||
PHOTOPRISM_HTTP_HOST="0.0.0.0" \
|
||||
PHOTOPRISM_HTTP_PORT="2342" \
|
||||
PHOTOPRISM_DATABASE_DRIVER="sqlite" \
|
||||
PHOTOPRISM_DATABASE_SERVER="" \
|
||||
PHOTOPRISM_DATABASE_NAME="photoprism" \
|
||||
PHOTOPRISM_DATABASE_USER="photoprism" \
|
||||
PHOTOPRISM_DISABLE_CHOWN="false" \
|
||||
PHOTOPRISM_DISABLE_WEBDAV="false" \
|
||||
PHOTOPRISM_DISABLE_SETTINGS="false" \
|
||||
PHOTOPRISM_DISABLE_BACKUPS="false" \
|
||||
PHOTOPRISM_DISABLE_EXIFTOOL="false" \
|
||||
PHOTOPRISM_DISABLE_PLACES="false" \
|
||||
PHOTOPRISM_DISABLE_TENSORFLOW="false" \
|
||||
PHOTOPRISM_DISABLE_FACES="false" \
|
||||
PHOTOPRISM_DISABLE_CLASSIFICATION="false" \
|
||||
PHOTOPRISM_RAW_PRESETS="false" \
|
||||
PHOTOPRISM_THUMB_UNCACHED="false" \
|
||||
PHOTOPRISM_AUTO_INDEX="300" \
|
||||
PHOTOPRISM_AUTO_IMPORT="-1" \
|
||||
PHOTOPRISM_INIT="https"
|
||||
|
||||
# Copy scripts.
|
||||
COPY --chown=root:root --chmod=755 /scripts/dist/ /scripts/
|
||||
|
||||
# Update pre-installed packages.
|
||||
RUN apt-get update && \
|
||||
apt-get -qq dist-upgrade && \
|
||||
yt-dlp -U && \
|
||||
/scripts/cleanup.sh
|
||||
|
||||
# Set default working directory.
|
||||
WORKDIR /photoprism
|
||||
|
||||
# Expose HTTP(S) ports.
|
||||
EXPOSE 2342 2443
|
||||
|
||||
# Copy app files.
|
||||
COPY --from=build --chown=root:root --chmod=755 /opt/photoprism/ /opt/photoprism
|
||||
Loading…
Add table
Add a link
Reference in a new issue