0% found this document useful (0 votes)
196 views4 pages

Docker Compose

Download as txt, pdf, or txt
Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1/ 4

version: '2'

# Example Docker Compose config file for PhotoPrism (Raspberry Pi 3/4 and other
ARM64-based devices)
#
# Note:
# - You have to boot your Raspberry Pi 3/4 with the parameter "arm_64bit=1" in
config.txt to use our ARM64 (64-bit) image.
# An "exec format" error will occur otherwise.
# - Try explicitly pulling the ARM64 version if you've booted your device with the
"arm_64bit=1" flag and you see
# the "no matching manifest" error on Raspberry Pi OS (Raspbian). See
documentation for details.
# - Use https://dl.photoprism.app/docker/armv7/docker-compose.yml for running
PhotoPrism on ARMv7-based (32-bit) devices.
# - Running PhotoPrism on a server with less than 4 GB of swap space or setting a
memory/swap limit can cause unexpected
# restarts ("crashes"), especially when the indexer temporarily needs more memory
to process large files.
# - If you see Docker errors related to "cgroups", it may help to add the following
to /boot/firmware/cmdline.txt:
# cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1
# - If you install PhotoPrism on a public server outside your home network, please
always run it behind a secure
# HTTPS reverse proxy such as Traefik, Caddy, or NGINX. Your files and passwords
will otherwise be transmitted
# in clear text and can be intercepted by anyone, including your provider,
hackers, and governments.
#
# Documentation : https://docs.photoprism.app/getting-started/raspberry-pi/
# Docker Hub URL: https://hub.docker.com/r/photoprism/photoprism/
#
# DOCKER COMPOSE COMMAND REFERENCE
# see https://docs.photoprism.app/getting-started/docker-compose/#command-line-
interface
# --------------------------------------------------------------------------
# Start | docker-compose up -d
# Stop | docker-compose stop
# Update | docker-compose pull
# Logs | docker-compose logs --tail=25 -f
# Terminal | docker-compose exec photoprism bash
# Help | docker-compose exec photoprism photoprism help
# Config | docker-compose exec photoprism photoprism config
# Reset | docker-compose exec photoprism photoprism reset
# Backup | docker-compose exec photoprism photoprism backup -a -i
# Restore | docker-compose exec photoprism photoprism restore -a -i
# Index | docker-compose exec photoprism photoprism index
# Reindex | docker-compose exec photoprism photoprism index -f
# Import | docker-compose exec photoprism photoprism import
#
# To search originals for faces without a complete rescan:
# docker-compose exec photoprism photoprism faces index
#
# All commands may have to be prefixed with "sudo" when not running as root.
# This will point the home directory placeholder ~ to /root in volume mounts.

services:
## App Server (required)
photoprism:
## photoprism/photoprism-arm64 has been replaced by a single multi-arch image
for AMD64 and ARM64 (64-bit).
## Use photoprism/photoprism:preview for testing preview builds or :latest for
the stable release:
image: photoprism/photoprism:armv7
depends_on:
- mariadb
## Only enable automatic restarts once your installation is properly
## configured as it otherwise may get stuck in a restart loop,
## see https://docs.photoprism.app/getting-started/faq/#why-is-photoprism-
getting-stuck-in-a-restart-loop
# restart: unless-stopped
security_opt:
- seccomp:unconfined
- apparmor:unconfined
## Run as a specific, non-root user (see
https://docs.docker.com/engine/reference/run/#user):
# user: "1000:1000"
ports:
- "2342:2342" # HTTP port (host:container)
environment:
PHOTOPRISM_ADMIN_PASSWORD: "Fireball87" # PLEASE CHANGE: Your
initial admin password (min 4 characters)
PHOTOPRISM_SITE_URL: "http://localhost:2342/" # Public server URL incl
http:// or https:// and /path, :port is optional
PHOTOPRISM_ORIGINALS_LIMIT: 5000 # File size limit for
originals in MB (increase for high-res video)
PHOTOPRISM_HTTP_COMPRESSION: "none" # Improves transfer speed and
bandwidth utilization (none or gzip)
PHOTOPRISM_WORKERS: 2 # Limits the number of
indexing workers to reduce system load
PHOTOPRISM_DEBUG: "false" # Run in debug mode (shows
additional log messages)
PHOTOPRISM_PUBLIC: "false" # No authentication required
(disables password protection)
PHOTOPRISM_READONLY: "false" # Don't modify originals
directory (reduced functionality)
PHOTOPRISM_EXPERIMENTAL: "false" # Enables experimental
features
PHOTOPRISM_DISABLE_CHOWN: "false" # Disables storage permission
updates on startup
PHOTOPRISM_DISABLE_WEBDAV: "false" # Disables built-in WebDAV
server
PHOTOPRISM_DISABLE_SETTINGS: "false" # Disables Settings in Web UI
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # Disables all features
depending on TensorFlow
PHOTOPRISM_DISABLE_FACES: "false" # Disables facial recognition
PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # Disables image
classification
PHOTOPRISM_DARKTABLE_PRESETS: "true" # Enables Darktable presets
and disables concurrent RAW conversion
# PHOTOPRISM_FFMPEG_ENCODER: "h264_v4l2m2m" # FFmpeg AVC encoder for video
transcoding (default: libx264)
# PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers
(default: 32)
PHOTOPRISM_DETECT_NSFW: "false" # Flag photos as private that
MAY be offensive
PHOTOPRISM_UPLOAD_NSFW: "true" # Allow uploads that MAY be
offensive
# PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded
database that doesn't require a server
PHOTOPRISM_DATABASE_DRIVER: "mysql" # Use MariaDB 10.5+ or MySQL
8+ instead of SQLite for improved performance
PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB or MySQL database
server (hostname:port)
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database
schema name
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database
user name
PHOTOPRISM_DATABASE_PASSWORD: "insecure" # MariaDB or MySQL database
user password
PHOTOPRISM_SITE_TITLE: "PhotoPrism"
PHOTOPRISM_SITE_CAPTION: "Browse Your Life"
PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: ""
## Set a non-root user, group, or custom umask if your Docker environment
doesn't support this natively:
# PHOTOPRISM_UID: 1000
# PHOTOPRISM_GID: 1000
# PHOTOPRISM_UMASK: 0000
HOME: "/photoprism"
## Hardware devices for video transcoding and machine learning (optional):
# devices:
# - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
working_dir: "/photoprism"
volumes:
## The *originals* folder contains your original photo and video files (-
"[host folder]:/photoprism/originals"):
- "~/Pictures:/photoprism/originals"
## Multiple folders can be made accessible by mounting them as subfolders
of /photoprism/originals:
# - "/mnt/Family:/photoprism/originals/Family" # [folder
1]:/photoprism/originals/[folder 1]
# - "/mnt/Friends:/photoprism/originals/Friends" # [folder
2]:/photoprism/originals/[folder 2]
## You may mount an *import* folder from which files can be transferred to
*originals* (optional):
# - "~/Import:/photoprism/import"
## Cache, session, thumbnail, and sidecar files will be created in the
*storage* folder (never remove):
- "./storage:/photoprism/storage"

## Database Server (recommended)


## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-
mariadb-or-mysql
mariadb:
restart: unless-stopped
image: arm64v8/mariadb:10.6 # this mariadb image runs on ARM64-based devices
only
security_opt:
- seccomp:unconfined
- apparmor:unconfined
command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-
COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
--max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-
timeout=120
## Never store database files on an unreliable device such as a USB flash drive
or a shared network folder:
volumes:
- "./database:/var/lib/mysql" # Important, don't remove
environment:
MYSQL_ROOT_PASSWORD: Fireball87
MYSQL_DATABASE: photoprism
MYSQL_USER: photoprism
MYSQL_PASSWORD: insecure

## Watchtower upgrades services automatically (optional)


## see https://docs.photoprism.app/getting-started/updates/#watchtower
#
# watchtower:
# restart: unless-stopped
# image: containrrr/watchtower
# environment:
# WATCHTOWER_CLEANUP: "true"
# WATCHTOWER_POLL_INTERVAL: 7200 # checks for updates every two hours
# volumes:
# - "/var/run/docker.sock:/var/run/docker.sock"
# - "~/.docker/config.json:/config.json" # Optional, for authentication if
you have a Docker Hub account

You might also like