Breaking Changes: Docker Parity (#698)

* Refactored all the config files for Kavita to be loaded from config/. This will allow docker to just mount one folder and for Update functionality to be trivial.

* Cleaned up documentation around new update method.

* Updated docker files to support config directory

* Removed entrypoint, no longer needed

* Update appsettings to point to config directory for logs

* Updated message for docker users that are upgrading

* Ensure that docker users that have not updated their mount points from upgrade cannot start the server

* Code smells

* More cleanup

* Added entrypoint to fix bind mount issues

* Updated README with new folder structure

* Fixed build system for new setup

* Updated string path if user is docker

* Updated the migration flow for docker to work properly and Fixed LogFile configuration updating.

* Migrating docker images is now working 100%

* Fixed config from bad code

* Code cleanup

Co-authored-by: Chris Plaatjes <kizaing@gmail.com>
This commit is contained in:
Joseph Milazzo 2021-11-03 08:36:04 -05:00 committed by GitHub
parent 66b79e8cbe
commit a29b11c366
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 670 additions and 438 deletions

130
entrypoint.sh Executable file → Normal file
View file

@ -1,107 +1,31 @@
#!/bin/bash
#! /bin/bash
#Checks if a token has been set, and then generates a new token if not
if grep -q 'super secret unguessable key' /kavita/appsettings.json
then
export TOKEN_KEY="$(pwgen -s 16 1)"
sed -i "s/super secret unguessable key/${TOKEN_KEY}/g" /kavita/appsettings.json
if [ ! -f "/kavita/config/appsettings.json" ]; then
echo "Kavita configuration file does not exist, creating..."
echo '{
"ConnectionStrings": {
"DefaultConnection": "Data source=config//kavita.db"
},
"TokenKey": "super secret unguessable key",
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Information",
"Microsoft.Hosting.Lifetime": "Error",
"Hangfire": "Information",
"Microsoft.AspNetCore.Hosting.Internal.WebHost": "Information"
},
"File": {
"Path": "config//logs/kavita.log",
"Append": "True",
"FileSizeLimitBytes": 26214400,
"MaxRollingFiles": 2
}
},
"Port": 5000
}' >> /kavita/config/appsettings.json
fi
#Checks if the appsettings.json already exists in bind mount
if test -f "/kavita/data/appsettings.json"
then
rm /kavita/appsettings.json
ln -s /kavita/data/appsettings.json /kavita/
else
mv /kavita/appsettings.json /kavita/data/ || true
ln -s /kavita/data/appsettings.json /kavita/
fi
chmod +x Kavita
#Checks if the data folders exist
if [ -d /kavita/data/temp ]
then
if [ -d /kavita/temp ]
then
unlink /kavita/temp
ln -s /kavita/data/temp /kavita/temp
else
ln -s /kavita/data/temp /kavita/temp
fi
else
mkdir /kavita/data/temp
ln -s /kavita/data/temp /kavita/temp
fi
if [ -d /kavita/data/cache ]
then
if [ -d /kavita/cache ]
then
unlink /kavita/cache
ln -s /kavita/data/cache /kavita/cache
else
ln -s /kavita/data/cache /kavita/cache
fi
else
mkdir /kavita/data/cache
ln -s /kavita/data/cache /kavita/cache
fi
if [ -d /kavita/data/logs ]
then
if [ -d /kavita/logs ]
then
unlink /kavita/logs
ln -s /kavita/data/logs /kavita/logs
else
ln -s /kavita/data/logs /kavita/logs
fi
else
mkdir /kavita/data/logs
ln -s /kavita/data/logs /kavita/logs
fi
if [ -d /kavita/data/backups ]
then
if [ -d /kavita/backups ]
then
unlink /kavita/backups
ln -s /kavita/data/backups /kavita/backups
else
ln -s /kavita/data/backups /kavita/backups
fi
else
mkdir /kavita/data/backups
ln -s /kavita/data/backups /kavita/backups
fi
if [ -d /kavita/data/stats ]
then
if [ -d /kavita/stats ]
then
unlink /kavita/stats
ln -s /kavita/data/stats /kavita/stats
else
ln -s /kavita/data/stats /kavita/stats
fi
else
mkdir /kavita/data/stats
ln -s /kavita/data/stats /kavita/stats
fi
if [ -d /kavita/data/covers ]
then
if [ -d /kavita/covers ]
then
unlink /kavita/covers
ln -s /kavita/data/covers /kavita/covers
else
ln -s /kavita/data/covers /kavita/covers
fi
else
mkdir /kavita/data/covers
ln -s /kavita/data/covers /kavita/covers
fi
chmod +x ./Kavita
./Kavita
./Kavita