Refactor docker deployment and user setup (#863)
* Fix #862, address #826 and maybe some other tickets: reimplemented the docker-compose user setup to enhance product setup experience and cover much more cases.
* make unique DB container name and use it in communication from Photoview
* Removed unnecessary healthcheck for photoview from docker-compose.example.yml, as it is defined in the Dockerfile; optimized Dockerfile combining all RUN directives of PROD stage into 1, which will produce single layer and save some space; added Dockerfile-dev, docker-compose-dev.yml, and new "dev" and "dev-down" directives into Makefile, which allows to setup development env in Docker. Instructions of how to use it are in comments at the beginning of Dockerfile-dev and docker-compose-dev.yml files
* Set RWX permissions to the application's working folder for any user, so that the image could be later run with non-root permissions and the app still be able to do needed operations in the FS
* Enhanced the "Getting started" section in the readme; added the `help` target and enhanced comments in the Makefile; commented out the `docker system prune -f` with the comment about the command and why it is there; added optional and commented by default `7zz` commands to the `backup` section of the Makefile
* Use `slim` base image for final photoview image
* Implement SQLite support according to the PR #851
* Removed deprecated `version` line from compose files; optimized dockerfile to build with less layers and run as non-root; mapped only Photoview related services to Watchtower by default instead of updating all running images on a host; added template for Postgres to the .env; reverted compose executable definition, so the new compose is called when present; added a tip about `lnav` to help
* fix a typo in the username; add support of PostgreSQL; split and optimize backup target in Makefile
* Fixed some typos and styling in Readme, excluded dev-environment setup from the PR; added a list of tips on how to secure Photoview in the Advanced setup section of Readme
* Implemented many security improvements, suggested by @Omar007, switched to the dedicated Darktable's repo to install the latest released version, as asked in #935; switched Watchtower to labels instead of profiles
* forgot the compose file
* move face models back to /app folder; comment out and document unnecessary vars in compose; fix a typo in a few vars
* Exclude Makefile in the root folder from git; documented multiple mounts case better; fixed incorrect SQLite DB path
* Fixed several bugs after complete testing cycle with all 3 DBs
* removed hardcoded port in Dockerfile
* Pin the major version for the `photoview` image for stability
* Revert back to the port 80 inside the container on product owner's request
* Provide a minimal compose file and update the readme accordingly
* Handle incorrect media file and folder permissions; set correct permissions for storage folder; fix healthcheck command for postgres
---------
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-05-15 10:58:02 +02:00
|
|
|
##================***================##
|
|
|
|
## These are the environment setup variables.
|
|
|
|
## Start setting up your instance from here.
|
|
|
|
## Syntax of the .env file is next:
|
|
|
|
## VARIABLE_NAME=variable value with everything after the '=' and till the end of the line.
|
|
|
|
## The variables with values, set in the docker-compose.yml directly, are for advanced configuration.
|
|
|
|
##================***================##
|
|
|
|
|
|
|
|
##----------Host variables-----------##
|
|
|
|
## This is the current folder, where all Photoview files and folders (except of your media library) are located
|
|
|
|
HOST_PHOTOVIEW_LOCATION=/opt/photoview
|
|
|
|
|
|
|
|
## This is where your original photos and videos located.
|
|
|
|
## Provide here the path to single root folder for your media collection.
|
|
|
|
HOST_PHOTOVIEW_MEDIA_ROOT=/your/root/media/folder
|
|
|
|
## If you'd like to map multiple folders from different locations, create additional variables
|
|
|
|
## here like the next one and modify the docker-compose.yml to match them and use in volume mappings.
|
|
|
|
# HOST_PHOTOVIEW_MEDIA_FAMILY=/full/path/to/folder
|
|
|
|
|
|
|
|
## This is where the Photoview data will be backed up
|
|
|
|
HOST_PHOTOVIEW_BACKUP=/media/Backup/PhotoView
|
|
|
|
##-----------------------------------##
|
|
|
|
|
|
|
|
##-------Photoview variables---------##
|
|
|
|
## PHOTOVIEW_DATABASE_DRIVER could have one of values: `mysql` (default), `sqlite`, `postgres`
|
|
|
|
PHOTOVIEW_DATABASE_DRIVER=mysql
|
|
|
|
|
|
|
|
## 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=yourToken
|
|
|
|
##-----------------------------------##
|
|
|
|
|
|
|
|
##--------MariaDB variables----------##
|
|
|
|
## Comment out these variables if PHOTOVIEW_DATABASE_DRIVER is `sqlite` or `postgres`
|
|
|
|
## Use password generator to generate secret values and replace these defaults
|
|
|
|
MARIADB_DATABASE=photoview
|
|
|
|
MARIADB_USER=photoview
|
2024-09-06 17:49:48 +02:00
|
|
|
## Note: If your `MARIADB_PASSWORD` contains special characters (e.g. `@`), make sure to URL-encode them.
|
Refactor docker deployment and user setup (#863)
* Fix #862, address #826 and maybe some other tickets: reimplemented the docker-compose user setup to enhance product setup experience and cover much more cases.
* make unique DB container name and use it in communication from Photoview
* Removed unnecessary healthcheck for photoview from docker-compose.example.yml, as it is defined in the Dockerfile; optimized Dockerfile combining all RUN directives of PROD stage into 1, which will produce single layer and save some space; added Dockerfile-dev, docker-compose-dev.yml, and new "dev" and "dev-down" directives into Makefile, which allows to setup development env in Docker. Instructions of how to use it are in comments at the beginning of Dockerfile-dev and docker-compose-dev.yml files
* Set RWX permissions to the application's working folder for any user, so that the image could be later run with non-root permissions and the app still be able to do needed operations in the FS
* Enhanced the "Getting started" section in the readme; added the `help` target and enhanced comments in the Makefile; commented out the `docker system prune -f` with the comment about the command and why it is there; added optional and commented by default `7zz` commands to the `backup` section of the Makefile
* Use `slim` base image for final photoview image
* Implement SQLite support according to the PR #851
* Removed deprecated `version` line from compose files; optimized dockerfile to build with less layers and run as non-root; mapped only Photoview related services to Watchtower by default instead of updating all running images on a host; added template for Postgres to the .env; reverted compose executable definition, so the new compose is called when present; added a tip about `lnav` to help
* fix a typo in the username; add support of PostgreSQL; split and optimize backup target in Makefile
* Fixed some typos and styling in Readme, excluded dev-environment setup from the PR; added a list of tips on how to secure Photoview in the Advanced setup section of Readme
* Implemented many security improvements, suggested by @Omar007, switched to the dedicated Darktable's repo to install the latest released version, as asked in #935; switched Watchtower to labels instead of profiles
* forgot the compose file
* move face models back to /app folder; comment out and document unnecessary vars in compose; fix a typo in a few vars
* Exclude Makefile in the root folder from git; documented multiple mounts case better; fixed incorrect SQLite DB path
* Fixed several bugs after complete testing cycle with all 3 DBs
* removed hardcoded port in Dockerfile
* Pin the major version for the `photoview` image for stability
* Revert back to the port 80 inside the container on product owner's request
* Provide a minimal compose file and update the readme accordingly
* Handle incorrect media file and folder permissions; set correct permissions for storage folder; fix healthcheck command for postgres
---------
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-05-15 10:58:02 +02:00
|
|
|
MARIADB_PASSWORD=photosecret
|
|
|
|
MARIADB_ROOT_PASSWORD=superphotosecret
|
|
|
|
##-----------------------------------##
|
|
|
|
|
|
|
|
##---------SQLite variables----------##
|
|
|
|
## Uncomment the next line if PHOTOVIEW_DATABASE_DRIVER is `sqlite`
|
|
|
|
# PHOTOVIEW_SQLITE_PATH=/home/photoview/database/photoview.db
|
|
|
|
##-----------------------------------##
|
|
|
|
|
|
|
|
##-------PostgreSQL variables--------##
|
|
|
|
## Uncomment the next lines if PHOTOVIEW_DATABASE_DRIVER is `postgres`
|
|
|
|
# PGSQL_DATABASE=photoview
|
|
|
|
# PGSQL_USER=photoview
|
2024-09-06 17:49:48 +02:00
|
|
|
## Note: If your `PGSQL_PASSWORD` contains special characters (e.g. `@`), make sure to URL-encode them.
|
Refactor docker deployment and user setup (#863)
* Fix #862, address #826 and maybe some other tickets: reimplemented the docker-compose user setup to enhance product setup experience and cover much more cases.
* make unique DB container name and use it in communication from Photoview
* Removed unnecessary healthcheck for photoview from docker-compose.example.yml, as it is defined in the Dockerfile; optimized Dockerfile combining all RUN directives of PROD stage into 1, which will produce single layer and save some space; added Dockerfile-dev, docker-compose-dev.yml, and new "dev" and "dev-down" directives into Makefile, which allows to setup development env in Docker. Instructions of how to use it are in comments at the beginning of Dockerfile-dev and docker-compose-dev.yml files
* Set RWX permissions to the application's working folder for any user, so that the image could be later run with non-root permissions and the app still be able to do needed operations in the FS
* Enhanced the "Getting started" section in the readme; added the `help` target and enhanced comments in the Makefile; commented out the `docker system prune -f` with the comment about the command and why it is there; added optional and commented by default `7zz` commands to the `backup` section of the Makefile
* Use `slim` base image for final photoview image
* Implement SQLite support according to the PR #851
* Removed deprecated `version` line from compose files; optimized dockerfile to build with less layers and run as non-root; mapped only Photoview related services to Watchtower by default instead of updating all running images on a host; added template for Postgres to the .env; reverted compose executable definition, so the new compose is called when present; added a tip about `lnav` to help
* fix a typo in the username; add support of PostgreSQL; split and optimize backup target in Makefile
* Fixed some typos and styling in Readme, excluded dev-environment setup from the PR; added a list of tips on how to secure Photoview in the Advanced setup section of Readme
* Implemented many security improvements, suggested by @Omar007, switched to the dedicated Darktable's repo to install the latest released version, as asked in #935; switched Watchtower to labels instead of profiles
* forgot the compose file
* move face models back to /app folder; comment out and document unnecessary vars in compose; fix a typo in a few vars
* Exclude Makefile in the root folder from git; documented multiple mounts case better; fixed incorrect SQLite DB path
* Fixed several bugs after complete testing cycle with all 3 DBs
* removed hardcoded port in Dockerfile
* Pin the major version for the `photoview` image for stability
* Revert back to the port 80 inside the container on product owner's request
* Provide a minimal compose file and update the readme accordingly
* Handle incorrect media file and folder permissions; set correct permissions for storage folder; fix healthcheck command for postgres
---------
Co-authored-by: Konstantin Koval <kkb@ukr.net>
2024-05-15 10:58:02 +02:00
|
|
|
# PGSQL_PASSWORD=superphotosecret
|
|
|
|
## See https://www.postgresql.org/docs/current/libpq-ssl.html for possible ssl modes
|
|
|
|
# PGSQL_SSL_MODE=prefer
|
|
|
|
##-----------------------------------##
|
|
|
|
|
|
|
|
##-------Watchtower variables--------##
|
|
|
|
## The POLL_INTERVAL in sec
|
|
|
|
WATCHTOWER_POLL_INTERVAL=86400
|
|
|
|
WATCHTOWER_TIMEOUT=30s
|
|
|
|
WATCHTOWER_CLEANUP=true
|
|
|
|
##\\\\\\\\\\\\\\\\\//////////////////##
|