version: '3.5' ## Integration Environment for Drone CI services: ## App Dev Container ## Docs: https://docs.photoprism.org/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: GOPROXY: ${GOPROXY:-http://goproxy:8888,direct} PHOTOPRISM_SITE_URL: "http://localhost:2342/" PHOTOPRISM_SITE_TITLE: "PhotoPrism" PHOTOPRISM_SITE_CAPTION: "Browse Your Life" 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_TEST_DSN_MYSQL8: "root:photoprism@tcp(mysql:4001)/photoprism?charset=utf8mb4,utf8&collation=utf8mb4_unicode_ci&parseTime=true" 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/init-test-databases.sql:/docker-entrypoint-initdb.d/init-test-databases.sql" environment: MYSQL_ROOT_PASSWORD: photoprism MYSQL_USER: photoprism MYSQL_PASSWORD: photoprism MYSQL_DATABASE: photoprism ## MySQL Database Server ## Docs: https://dev.mysql.com/doc/refman/8.0/en/ mysql: image: mysql:8 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/init-test-databases.sql:/docker-entrypoint-initdb.d/init-test-databases.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