83 lines
4.4 KiB
YAML
83 lines
4.4 KiB
YAML
services:
|
|
photoview:
|
|
image: viktorstrate/photoview:2
|
|
hostname: photoview
|
|
container_name: photoview
|
|
restart: unless-stopped
|
|
stop_grace_period: 10s
|
|
ports:
|
|
- "8000:80" ## HTTP port (host:container)
|
|
## This ensures that DB is initialized and ready for connections.
|
|
## Comment out the entire `depends_on` section if PHOTOVIEW_DATABASE_DRIVER is set to `sqlite` in the .env
|
|
depends_on:
|
|
mariadb:
|
|
condition: service_healthy
|
|
## Security options for some restricted systems
|
|
security_opt:
|
|
- seccomp:unconfined
|
|
- apparmor:unconfined
|
|
environment:
|
|
PHOTOVIEW_DATABASE_DRIVER: ${PHOTOVIEW_DATABASE_DRIVER}
|
|
## Comment out the next variable in the case PHOTOVIEW_DATABASE_DRIVER is set to `sqlite` or `postgres` in the .env
|
|
PHOTOVIEW_MYSQL_URL: "${MARIADB_USER}:${MARIADB_PASSWORD}@tcp(photoview-mariadb)/${MARIADB_DATABASE}"
|
|
## Uncomment the next line if PHOTOVIEW_DATABASE_DRIVER is set to `sqlite` in the .env
|
|
# PHOTOVIEW_SQLITE_PATH: ${PHOTOVIEW_SQLITE_PATH}
|
|
PHOTOVIEW_LISTEN_IP: "photoview"
|
|
## Optional: If you are using Samba/CIFS-Share and experience problems with "directory not found"
|
|
## Enable the following Godebug
|
|
# - GODEBUG=asyncpreemptoff=1
|
|
## Optional: To enable map related features, you need to create a mapbox token.
|
|
## A token can be generated for free here https://account.mapbox.com/access-tokens/
|
|
## It's a good idea to limit the scope of the token to your own domain, to prevent others from using it.
|
|
MAPBOX_TOKEN: ${MAPBOX_TOKEN}
|
|
volumes:
|
|
## Example:
|
|
## - "/host/folder:/container/folder"
|
|
- "/etc/localtime:/etc/localtime:ro" ## use local time from host
|
|
- "/etc/timezone:/etc/timezone:ro" ## use timezone from host
|
|
## Uncomment the next line if PHOTOVIEW_DATABASE_DRIVER is set to `sqlite` in the .env
|
|
# - "${HOST_PHOTOVIEW_LOCATION}/database:/home/photoview/database"
|
|
- "${HOST_PHOTOVIEW_LOCATION}/storage:/home/photoview/media-cache"
|
|
## Change This in the .env file: to the directory where your photos are located on your server.
|
|
## You can mount multiple paths if your photos are spread across multiple directories.
|
|
## The same path as the container path set here, you'll need to provide on the Photoview's init page (the one between the ':' chars).
|
|
## If you mount several folders, provide the path to the parent one on the init page.
|
|
## If you mount several folders, make sure that there are no direct mappings to the media root folder.
|
|
## This means that you need to also modify the container path of the HOST_PHOTOVIEW_MEDIA_ROOT
|
|
## to something like '/photos/main'. Note that this new name ('main' in this example) will become an album in Photoview.
|
|
- "${HOST_PHOTOVIEW_MEDIA_ROOT}:/photos:ro"
|
|
## *Additional* media folders can be mounted like this (set the variable in .env file)
|
|
## Note that a mount cannot be located in a subfolder of another mount.
|
|
# - "${HOST_PHOTOVIEW_MEDIA_FAMILY}:/photos/Family:ro"
|
|
|
|
## Comment out the `mariadb` service if PHOTOVIEW_DATABASE_DRIVER is set to `sqlite` or `postgres` in the .env
|
|
mariadb:
|
|
image: mariadb:lts
|
|
hostname: photoview-mariadb
|
|
container_name: photoview-mariadb
|
|
restart: unless-stopped
|
|
stop_grace_period: 5s
|
|
## Optimized MariaDB startup command for better performance and compatibility
|
|
command: mariadbd --innodb-buffer-pool-size=512M --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
|
|
security_opt: ## see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
|
|
- seccomp:unconfined
|
|
- apparmor:unconfined
|
|
environment:
|
|
MARIADB_AUTO_UPGRADE: "1"
|
|
MARIADB_DATABASE: ${MARIADB_DATABASE}
|
|
MARIADB_USER: ${MARIADB_USER}
|
|
MARIADB_PASSWORD: ${MARIADB_PASSWORD}
|
|
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
|
|
volumes:
|
|
## Example:
|
|
## - "/host/folder:/container/folder"
|
|
- "/etc/localtime:/etc/localtime:ro" ## use local time from host
|
|
- "/etc/timezone:/etc/timezone:ro" ## use timezone from host
|
|
- "${HOST_PHOTOVIEW_LOCATION}/database/mariadb:/var/lib/mysql" ## DO NOT REMOVE
|
|
healthcheck:
|
|
test: healthcheck.sh --connect --innodb_initialized
|
|
interval: 1m
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 3m
|