Compare commits
2 Commits
f34200901e
...
6e99404134
Author | SHA1 | Date | |
---|---|---|---|
|
6e99404134 | ||
|
7b033454b3 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -3,7 +3,8 @@ settings.json
|
|||||||
db.sqlite3
|
db.sqlite3
|
||||||
dummyusers.json
|
dummyusers.json
|
||||||
*.prof
|
*.prof
|
||||||
|
statictest.txt
|
||||||
|
./test.sh
|
||||||
|
|
||||||
# IDE
|
# IDE
|
||||||
.vscode
|
.vscode
|
||||||
|
@ -23,9 +23,10 @@ with open(BASE_DIR + "/settings.json", "r") as userfile:
|
|||||||
CALIBRE_DIR = os.path.abspath(usersettings["CALIBRE_DIR"])
|
CALIBRE_DIR = os.path.abspath(usersettings["CALIBRE_DIR"])
|
||||||
SECRET_KEY = usersettings["SECRET_KEY"]
|
SECRET_KEY = usersettings["SECRET_KEY"]
|
||||||
ALLOWED_HOSTS = usersettings["ALLOWED_HOSTS"]
|
ALLOWED_HOSTS = usersettings["ALLOWED_HOSTS"]
|
||||||
INTERNAL_IPS = usersettings["INTERNAL_IPS"]
|
|
||||||
DEBUG = usersettings["DEBUG"]
|
DEBUG = usersettings["DEBUG"]
|
||||||
|
|
||||||
|
DOCKER = os.environ.get('AM_DOCKER_INSTANCE', False)
|
||||||
|
|
||||||
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
|
|
||||||
@ -64,9 +65,12 @@ STATIC_ROOT = BASE_DIR + "/static/"
|
|||||||
#########################################################################
|
#########################################################################
|
||||||
# LOGGING
|
# LOGGING
|
||||||
|
|
||||||
|
# TODO: think about the issue for a bit. no write access to file on first run
|
||||||
|
# but startscript doesn't run to give access if it can't start django
|
||||||
# logfile = usersettings["LOGFOLDER"] + "django.log"
|
# if not DOCKER:
|
||||||
|
# logfile = "/app//data//django.log"
|
||||||
|
# if not os.path.isfile(logfile):
|
||||||
|
# os.mknod(logfile)
|
||||||
# LOGGING = {
|
# LOGGING = {
|
||||||
# "version": 1,
|
# "version": 1,
|
||||||
# "disable_existing_loggers": False,
|
# "disable_existing_loggers": False,
|
||||||
@ -190,19 +194,23 @@ WSGI_APPLICATION = 'CalibreWebCompanion.wsgi.application'
|
|||||||
## DATBASE ##
|
## DATBASE ##
|
||||||
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
|
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
|
||||||
|
|
||||||
if usersettings["ISDOCKER"]:
|
|
||||||
defaultdb_path = "/usr/src/app/data/"
|
if DOCKER:
|
||||||
|
djangodb_path = "/app/CalibreWebCompanion"
|
||||||
|
calibredb_path = "/app/content/"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
defaultdb_path = BASE_DIR
|
djangodb_path = BASE_DIR
|
||||||
|
calibredb_path = CALIBRE_DIR
|
||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.sqlite3',
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
'NAME': os.path.join(defaultdb_path, 'db.sqlite3'),
|
'NAME': os.path.join(djangodb_path, 'db.sqlite3'),
|
||||||
},
|
},
|
||||||
'calibre': {
|
'calibre': {
|
||||||
'ENGINE': 'django.db.backends.sqlite3',
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
'NAME': os.path.join(CALIBRE_DIR, 'metadata.db'),
|
'NAME': os.path.join(calibredb_path, 'metadata.db'),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<div class="col s12 m7">
|
<div class="col s12 m7">
|
||||||
<div class="card z-depth-0 horizontal">
|
<div class="card z-depth-0 horizontal">
|
||||||
<div class="card-image">
|
<div class="card-image">
|
||||||
<a style="padding-top:15%" href=" /download/{{download}}"><img src=" /download/{{imgpath}}"
|
<a style="padding-top:15%" href=" /content/{{download}}"><img src=" /content/{{imgpath}}"
|
||||||
alt="download" srcset=""></a>
|
alt="download" srcset=""></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-stacked">
|
<div class="card-stacked">
|
||||||
|
@ -1,15 +1,13 @@
|
|||||||
{
|
{
|
||||||
"CALIBRE_DIR": "/usr/src/app/calibredir",
|
"CALIBRE_DIR": "/app/content",
|
||||||
|
"LOGFOLDER" : "/usr/src/app/data/logs/",
|
||||||
"SECRET_KEY": "u(8^+rb%rz5hsx4v^^y(ul7g(4n7a8!db@s*9(m5cs*2_ppy8+",
|
"SECRET_KEY": "u(8^+rb%rz5hsx4v^^y(ul7g(4n7a8!db@s*9(m5cs*2_ppy8+",
|
||||||
"ALLOWED_HOSTS": [
|
"ALLOWED_HOSTS": [
|
||||||
"127.0.0.1"
|
"*"
|
||||||
],
|
],
|
||||||
"INTERNAL_IPS": [
|
"INTERNAL_IPS": [
|
||||||
"127.0.0.1"
|
"127.0.0.1", "localhost"
|
||||||
],
|
],
|
||||||
"DEBUG" : true,
|
"DEBUG" : false
|
||||||
"LOGFOLDER" : "/usr/src/app/data/logs/",
|
|
||||||
"ISDOCKER" : true
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -2,23 +2,22 @@
|
|||||||
## pull official base image
|
## pull official base image
|
||||||
FROM nginx/unit:1.22.0-python3.9
|
FROM nginx/unit:1.22.0-python3.9
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
ENV AM_DOCKER_INSTANCE Yes
|
||||||
## set work directory
|
## set work directory
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /app
|
||||||
|
|
||||||
## install dependencies
|
## install dependencies
|
||||||
COPY ./requirements.txt .
|
COPY ./requirements.txt .
|
||||||
RUN pip install -r requirements.txt
|
RUN pip install -r requirements.txt
|
||||||
|
|
||||||
## copy project
|
## copy project
|
||||||
COPY ./CalibreWebCompanion ./CalibreWebCompanion
|
COPY ./CalibreWebCompanion ./CalibreWebCompanion
|
||||||
COPY ./deployment/entrypoints/* /docker-entrypoint.d/
|
|
||||||
# perms
|
# perms
|
||||||
RUN chown -R unit:unit /usr/src/app
|
RUN chown -R unit:unit /app
|
||||||
|
COPY ./deployment/entrypoints/* /docker-entrypoint.d/
|
||||||
RUN chmod +x /docker-entrypoint.d/start.sh
|
RUN chmod +x /docker-entrypoint.d/start.sh
|
||||||
|
|
||||||
|
|
||||||
# docker run --publish 80:80 \
|
# docker run --publish 80:80 \
|
||||||
# -v '/home/MassiveAtoms/Desktop/logs:/usr/src/app/data' \
|
# -v '/home/MassiveAtoms/Desktop/logs:/app/data' \
|
||||||
# -v '/home/MassiveAtoms/windows/Users/MassiveAtoms/Documents/Calibre Library/:/usr/src/app/calibredir' \
|
# -v '/home/MassiveAtoms/windows/Users/MassiveAtoms/Documents/Calibre Library/:/app/calibredir' \
|
||||||
# --name cw calibreweb:1.0
|
# --name cw calibreweb:1.0
|
||||||
|
@ -6,14 +6,30 @@
|
|||||||
},
|
},
|
||||||
"routes": [
|
"routes": [
|
||||||
{
|
{
|
||||||
"match": {"uri": "/static/*"},
|
"match": {
|
||||||
"action": {"share": "/usr/src/app/CalibreWebCompanion/static"}
|
"uri": [
|
||||||
|
"/content/*",
|
||||||
|
"!~\\.db"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"action": {
|
||||||
|
"share": "/app/"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"match": {"uri": "/download/*"},
|
"match": {
|
||||||
"action": {"share": "/usr/src/app/calibredir"}
|
"uri": "/static/*"
|
||||||
|
},
|
||||||
|
"action": {
|
||||||
|
"share": "/app/CalibreWebCompanion/"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"match": {
|
||||||
|
"uri": [
|
||||||
|
"!~\\.db", "*"
|
||||||
|
]
|
||||||
|
},
|
||||||
"action": {
|
"action": {
|
||||||
"pass": "applications/django"
|
"pass": "applications/django"
|
||||||
}
|
}
|
||||||
@ -22,12 +38,16 @@
|
|||||||
"applications": {
|
"applications": {
|
||||||
"django": {
|
"django": {
|
||||||
"type": "python 3",
|
"type": "python 3",
|
||||||
"path": "/usr/src/app/CalibreWebCompanion/",
|
"path": "/app/CalibreWebCompanion/",
|
||||||
"module": "CalibreWebCompanion.wsgi",
|
"module": "CalibreWebCompanion.wsgi",
|
||||||
"environment": {
|
"environment": {
|
||||||
"DJANGO_SETTINGS_MODULE": "CalibreWebCompanion.settings",
|
"DJANGO_SETTINGS_MODULE": "CalibreWebCompanion.settings",
|
||||||
"DB_ENGINE": "django.db.backends.sqlite3"
|
"DB_ENGINE": "django.db.backends.sqlite3"
|
||||||
|
},
|
||||||
|
"processes" : {
|
||||||
|
"max": 25,
|
||||||
|
"spare": 1,
|
||||||
|
"idle_timeout": 20
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,22 @@
|
|||||||
path=/usr/src/app/CalibreWebCompanion
|
CAL_DIR="/app/content/"
|
||||||
chown -R unit:unit /usr/src/app
|
DATA_DIR="/app/data/"
|
||||||
|
CWC_PATH="/app/CalibreWebCompanion"
|
||||||
|
if [ ! -d "$CAL_DIR" ]; then
|
||||||
|
echo "Calibre Library not mounted at the correct location."
|
||||||
|
echo "Mount it at /app/content/"
|
||||||
|
echo "Exiting..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
python "${path}/manage.py" makemigrations
|
if [ ! -d "$DATA_DIR" ]; then
|
||||||
python "${path}/manage.py" migrate
|
echo "A data directory not mounted at the correct location, exiting"
|
||||||
|
echo "This is used to store the database and logs"
|
||||||
|
echo "mount something at /app/data/"
|
||||||
|
echo "exiting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp -R -u -p "/app/CalibreWebCompanion/db.sqlite3" "/app/data/"
|
||||||
|
ls -l /app
|
||||||
|
python "${CWC_PATH}/manage.py" makemigrations
|
||||||
|
python "${CWC_PATH}/manage.py" migrate
|
||||||
|
@ -8,12 +8,12 @@
|
|||||||
Here's an example of step 5
|
Here's an example of step 5
|
||||||
```
|
```
|
||||||
docker run --publish 80:80 \
|
docker run --publish 80:80 \
|
||||||
-v '/home/MassiveAtoms/Desktop/logs:/usr/src/app/data' \
|
-v '/home/MassiveAtoms/Desktop/logs:/app/data' \
|
||||||
-v '/home/MassiveAtoms/windows/Users/MassiveAtoms/Documents/Calibre\ Library/:/usr/src/app/calibredir' \
|
-v '/home/MassiveAtoms/windows/Users/MassiveAtoms/Documents/Calibre\ Library/:/app/calibredir' \
|
||||||
--name cw calibreweb:1.0
|
--name cw calibreweb:1.0
|
||||||
```
|
```
|
||||||
|
|
||||||
your Calibre path/volume/whatever needs to be mounted at `/usr/src/app/calibredir`, and you need to mount a volume for the db and logs at `/usr/src/app/data`
|
your Calibre path/volume/whatever needs to be mounted at `/app/calibredir`, and you need to mount a volume for the db and logs at `/app/data`
|
||||||
|
|
||||||
Issues with it at the moment:
|
Issues with it at the moment:
|
||||||
1. we still need to do something to create a random secret key. Atm, this would still
|
1. we still need to do something to create a random secret key. Atm, this would still
|
||||||
|
17
test.sh
Executable file
17
test.sh
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
docker build --tag calibreweb:1.0 . -f ./deployment/Dockerfile
|
||||||
|
docker stop cw
|
||||||
|
docker rm cw
|
||||||
|
docker run --publish 80:80 \
|
||||||
|
-v '/home/MassiveAtoms/Desktop/logs:/app/data' \
|
||||||
|
-v '/home/MassiveAtoms/windows/Users/MassiveAtoms/Documents/Calibre Library/:/app/content' \
|
||||||
|
--name cw calibreweb:1.0
|
||||||
|
sleep 8
|
||||||
|
echo "download/test"
|
||||||
|
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1/download/statictest.txt
|
||||||
|
echo " "
|
||||||
|
echo "/test"
|
||||||
|
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1/statictest.txt
|
||||||
|
echo " "
|
||||||
|
echo "/static/test"
|
||||||
|
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1/static/statictest.txt
|
||||||
|
echo " "
|
Loading…
Reference in New Issue
Block a user