photoprism/docker-compose.ci.yml

165 lines
6.2 KiB
YAML

version: '3.5'
## Continuous Integration (CI) Test Environment
services:
## App Dev Container
## Docs: https://docs.photoprism.app/developer-guide/
photoprism:
build: .
image: photoprism/photoprism:develop
security_opt:
- seccomp:unconfined
- apparmor:unconfined
depends_on:
- mariadb
- dummy-webdav
volumes:
- "~/.cache/npm:/root/.cache/npm"
- "~/.cache/go-mod:/go/pkg/mod"
environment:
PHOTOPRISM_SITE_URL: "http://localhost:2342/"
PHOTOPRISM_SITE_TITLE: "PhotoPrism"
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: "Open-Source Photo Management"
PHOTOPRISM_SITE_AUTHOR: "@photoprism_app"
PHOTOPRISM_DEBUG: "false"
PHOTOPRISM_READONLY: "false"
PHOTOPRISM_PUBLIC: "true"
PHOTOPRISM_PID_FILENAME: "photoprism.pid"
PHOTOPRISM_LOG_FILENAME: "photoprism.log"
PHOTOPRISM_DETACH_SERVER: "true"
PHOTOPRISM_HTTP_HOST: "0.0.0.0"
PHOTOPRISM_HTTP_PORT: 2342
PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip)
PHOTOPRISM_DATABASE_DRIVER: "mysql"
PHOTOPRISM_DATABASE_SERVER: "mariadb:4001"
PHOTOPRISM_DATABASE_NAME: "photoprism"
PHOTOPRISM_DATABASE_USER: "root"
PHOTOPRISM_DATABASE_PASSWORD: "photoprism"
PHOTOPRISM_TEST_DRIVER: "sqlite"
PHOTOPRISM_TEST_DSN: ".test.db"
PHOTOPRISM_ADMIN_PASSWORD: "photoprism" # the initial admin password (min 4 characters)
PHOTOPRISM_ASSETS_PATH: "/go/src/github.com/photoprism/photoprism/assets"
PHOTOPRISM_STORAGE_PATH: "/go/src/github.com/photoprism/photoprism/storage"
PHOTOPRISM_ORIGINALS_PATH: "/go/src/github.com/photoprism/photoprism/storage/originals"
PHOTOPRISM_IMPORT_PATH: "/go/src/github.com/photoprism/photoprism/storage/import"
PHOTOPRISM_DISABLE_CHOWN: "true" # disables storage permission updates on startup
PHOTOPRISM_DISABLE_BACKUPS: "false" # don't backup photo and album metadata to YAML files
PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server
PHOTOPRISM_DISABLE_SETTINGS: "false" # disables Settings in Web UI
PHOTOPRISM_DISABLE_PLACES: "false" # disables reverse geocoding and maps
PHOTOPRISM_DISABLE_EXIFTOOL: "false" # don't create ExifTool JSON files for improved metadata extraction
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # don't use TensorFlow for image classification
PHOTOPRISM_DETECT_NSFW: "false" # flag photos as private that MAY be offensive (requires TensorFlow)
PHOTOPRISM_UPLOAD_NSFW: "false" # allow uploads that may be offensive
PHOTOPRISM_DARKTABLE_PRESETS: "false" # enables Darktable presets and disables concurrent RAW conversion
PHOTOPRISM_THUMB_FILTER: "lanczos" # resample filter, best to worst: blackman, lanczos, cubic, linear
PHOTOPRISM_THUMB_UNCACHED: "true" # enables on-demand thumbnail rendering (high memory and cpu usage)
PHOTOPRISM_THUMB_SIZE: 2048 # pre-rendered thumbnail size limit (default 2048, min 720, max 7680)
# PHOTOPRISM_THUMB_SIZE: 4096 # retina 4K, DCI 4K (requires more storage); 7680 for 8K Ultra HD
PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680 # on-demand rendering size limit (default 7680, min 720, max 7680)
PHOTOPRISM_JPEG_SIZE: 7680 # size limit for converted image files in pixels (720-30000)
PHOTOPRISM_JPEG_QUALITY: 92 # set to 95 for high-quality thumbnails (25-100)
CODECOV_TOKEN:
CODECOV_ENV:
CODECOV_URL:
CODECOV_SLUG:
VCS_COMMIT_ID:
VCS_BRANCH_NAME:
VCS_PULL_REQUEST:
VCS_SLUG:
VCS_TAG:
CI_BUILD_URL:
CI_BUILD_ID:
CI_JOB_ID:
CI:
DRONE:
DRONE_BRANCH:
DRONE_BUILD_ACTION:
DRONE_BUILD_CREATED:
DRONE_BUILD_EVENT:
DRONE_BUILD_FINISHED:
DRONE_BUILD_NUMBER:
DRONE_BUILD_PARENT:
DRONE_BUILD_STARTED:
DRONE_BUILD_STATUS:
DRONE_CALVER:
DRONE_COMMIT:
DRONE_COMMIT_AFTER:
DRONE_COMMIT_AUTHOR:
DRONE_COMMIT_AUTHOR_AVATAR:
DRONE_COMMIT_AUTHOR_EMAIL:
DRONE_COMMIT_AUTHOR_NAME:
DRONE_COMMIT_BEFORE:
DRONE_COMMIT_BRANCH:
DRONE_COMMIT_LINK:
DRONE_COMMIT_MESSAGE:
DRONE_COMMIT_REF:
DRONE_COMMIT_SHA:
DRONE_DEPLOY_TO:
DRONE_FAILED_STAGES:
DRONE_FAILED_STEPS:
DRONE_GIT_HTTP_URL:
DRONE_GIT_SSH_URL:
DRONE_PULL_REQUEST:
DRONE_REMOTE_URL:
DRONE_REPO:
DRONE_REPO_BRANCH:
DRONE_REPO_LINK:
DRONE_REPO_NAME:
DRONE_REPO_NAMESPACE:
DRONE_REPO_OWNER:
DRONE_REPO_PRIVATE:
DRONE_REPO_SCM:
DRONE_REPO_VISIBILITY:
DRONE_SEMVER:
DRONE_SEMVER_BUILD:
DRONE_SEMVER_ERROR:
DRONE_SEMVER_MAJOR:
DRONE_SEMVER_MINOR:
DRONE_SEMVER_PATCH:
DRONE_SEMVER_PRERELEASE:
DRONE_SEMVER_SHORT:
DRONE_SOURCE_BRANCH:
DRONE_STAGE_ARCH:
DRONE_STAGE_DEPENDS_ON:
DRONE_STAGE_FINISHED:
DRONE_STAGE_KIND:
DRONE_STAGE_MACHINE:
DRONE_STAGE_NAME:
DRONE_STAGE_NUMBER:
DRONE_STAGE_OS:
DRONE_STAGE_STARTED:
DRONE_STAGE_STATUS:
DRONE_STAGE_TYPE:
DRONE_STAGE_VARIANT:
DRONE_STEP_NAME:
DRONE_STEP_NUMBER:
DRONE_SYSTEM_HOST:
DRONE_SYSTEM_HOSTNAME:
DRONE_SYSTEM_PROTO:
DRONE_SYSTEM_VERSION:
DRONE_TAG:
DRONE_TARGET_BRANCH:
## MariaDB Database Server
## Docs: https://mariadb.com/docs/reference/cs10.6/
mariadb:
image: mariadb:10.6
command: mysqld --port=4001 --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
expose:
- "4001" # database port (internal)
volumes:
- "./scripts/sql/mariadb-init.sql:/docker-entrypoint-initdb.d/init.sql"
environment:
MYSQL_ROOT_PASSWORD: photoprism
MYSQL_USER: photoprism
MYSQL_PASSWORD: photoprism
MYSQL_DATABASE: photoprism
## Dummy WebDAV Server
dummy-webdav:
image: photoprism/dummy-webdav:20211109
environment:
WEBDAV_USERNAME: admin
WEBDAV_PASSWORD: photoprism