mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-07-09 03:04:19 -04:00
parent
77c52717ce
commit
7b02ddf8b1
3
.gitattributes
vendored
Normal file
3
.gitattributes
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Set line formatting for scripts
|
||||||
|
|
||||||
|
*.sh text eol=lf
|
44
Dockerfile
Normal file
44
Dockerfile
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#This Dockerfile pulls the latest git commit and builds Kavita from source
|
||||||
|
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS builder
|
||||||
|
|
||||||
|
MAINTAINER Chris P
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
ARG TARGETPLATFORM
|
||||||
|
|
||||||
|
#Installs nodejs and npm
|
||||||
|
RUN curl -fsSL https://deb.nodesource.com/setup_14.x | bash - \
|
||||||
|
&& apt-get install -y nodejs \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
#Builds app based on platform
|
||||||
|
COPY build_target.sh /build_target.sh
|
||||||
|
RUN /build_target.sh
|
||||||
|
|
||||||
|
#Production image
|
||||||
|
FROM ubuntu:focal
|
||||||
|
|
||||||
|
MAINTAINER Chris P
|
||||||
|
|
||||||
|
#Move the output files to where they need to be
|
||||||
|
COPY --from=builder /Projects/Kavita/_output/build/Kavita /kavita
|
||||||
|
|
||||||
|
#Installs program dependencies
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y libicu-dev libssl1.1 pwgen \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
#Creates the manga storage directory
|
||||||
|
RUN mkdir /manga /kavita/data
|
||||||
|
|
||||||
|
RUN cp /kavita/appsettings.Development.json /kavita/appsettings.json \
|
||||||
|
&& sed -i 's/Data source=kavita.db/Data source=data\/kavita.db/g' /kavita/appsettings.json
|
||||||
|
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
EXPOSE 5000
|
||||||
|
|
||||||
|
WORKDIR /kavita
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/bash"]
|
||||||
|
CMD ["/entrypoint.sh"]
|
28
Dockerfile.alpine
Normal file
28
Dockerfile.alpine
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#This Dockerfile is for the musl alpine build of Kavita.
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
MAINTAINER Chris P
|
||||||
|
|
||||||
|
#Installs the needed dependencies
|
||||||
|
RUN apk update && apk add --no-cache wget curl pwgen icu-dev bash
|
||||||
|
|
||||||
|
#Downloads Kavita, unzips and moves the folders to where they need to be
|
||||||
|
RUN wget https://github.com/Kareadita/Kavita/releases/download/v0.3.7/kavita-linux-musl-x64.tar.gz \
|
||||||
|
&& tar -xzf kavita*.tar.gz \
|
||||||
|
&& mv Kavita/ /kavita/ \
|
||||||
|
&& rm kavita*.gz \
|
||||||
|
&& chmod +x /kavita/Kavita
|
||||||
|
|
||||||
|
#Creates the needed folders
|
||||||
|
RUN mkdir /manga /kavita/data /kavita/temp /kavita/cache
|
||||||
|
|
||||||
|
RUN sed -i 's/Data source=kavita.db/Data source=data\/kavita.db/g' /kavita/appsettings.json
|
||||||
|
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
EXPOSE 5000
|
||||||
|
|
||||||
|
WORKDIR /kavita
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/bash"]
|
||||||
|
CMD ["/entrypoint.sh"]
|
27
Dockerfile.arm
Normal file
27
Dockerfile.arm
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#This Dockerfile pulls the latest git commit and builds Kavita from source
|
||||||
|
|
||||||
|
#Production image
|
||||||
|
FROM ubuntu:focal
|
||||||
|
|
||||||
|
#Move the output files to where they need to be
|
||||||
|
COPY Kavita /kavita
|
||||||
|
|
||||||
|
#Installs program dependencies
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y libicu-dev libssl1.1 pwgen \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
#Creates the manga storage directory
|
||||||
|
RUN mkdir /kavita/data
|
||||||
|
|
||||||
|
RUN cp /kavita/appsettings.Development.json /kavita/appsettings.json \
|
||||||
|
&& sed -i 's/Data source=kavita.db/Data source=data\/kavita.db/g' /kavita/appsettings.json
|
||||||
|
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
EXPOSE 5000
|
||||||
|
|
||||||
|
WORKDIR /kavita
|
||||||
|
|
||||||
|
ENTRYPOINT ["/bin/bash"]
|
||||||
|
CMD ["/entrypoint.sh"]
|
27
build_target.sh
Normal file
27
build_target.sh
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
mkdir Projects
|
||||||
|
|
||||||
|
cd Projects
|
||||||
|
|
||||||
|
git clone https://github.com/Kareadita/Kavita.git
|
||||||
|
git clone https://github.com/Kareadita/Kavita-webui.git
|
||||||
|
|
||||||
|
cd Kavita
|
||||||
|
chmod +x build.sh
|
||||||
|
|
||||||
|
#Builds program based on the target platform
|
||||||
|
|
||||||
|
if [ "$TARGETPLATFORM" == "linux/amd64" ]
|
||||||
|
then
|
||||||
|
./build.sh linux-x64
|
||||||
|
mv /Projects/Kavita/_output/linux-x64 /Projects/Kavita/_output/build
|
||||||
|
elif [ "$TARGETPLATFORM" == "linux/arm/v7" ]
|
||||||
|
then
|
||||||
|
./build.sh linux-arm
|
||||||
|
mv /Projects/Kavita/_output/linux-arm /Projects/Kavita/_output/build
|
||||||
|
elif [ "$TARGETPLATFORM" == "linux/arm64" ]
|
||||||
|
then
|
||||||
|
./build.sh linux-arm64
|
||||||
|
mv /Projects/Kavita/_output/linux-arm64 /Projects/Kavita/_output/build
|
||||||
|
fi
|
13
docker-compose.yml
Normal file
13
docker-compose.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
version: '3.9'
|
||||||
|
services:
|
||||||
|
kavita:
|
||||||
|
image: kizaing/kavita:latest
|
||||||
|
volumes:
|
||||||
|
- ./manga:/manga
|
||||||
|
- ./data/temp:/kavita/temp
|
||||||
|
- ./data/cache:/kavita/cache
|
||||||
|
- ./data:/kavita/data
|
||||||
|
- ./data/logs:/kavita/logs
|
||||||
|
ports:
|
||||||
|
- "5000:5000"
|
||||||
|
restart: unless-stopped
|
68
entrypoint.sh
Normal file
68
entrypoint.sh
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#!/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
|
||||||
|
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/
|
||||||
|
ln -s /kavita/data/appsettings.json /kavita/
|
||||||
|
fi
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
|
# Checks for the log file
|
||||||
|
|
||||||
|
if test -f "/kavita/data/logs/kavita.log"
|
||||||
|
then
|
||||||
|
rm /kavita/kavita.log
|
||||||
|
ln -s /kavita/data/logs/kavita.log /kavita/
|
||||||
|
else
|
||||||
|
if [ -d /kavita/data/logs ]
|
||||||
|
then
|
||||||
|
touch /kavita/data/logs/kavita.log
|
||||||
|
ln -s /kavita/data/logs/kavita.log /kavita/
|
||||||
|
else
|
||||||
|
mkdir /kavita/data/logs
|
||||||
|
touch /kavita/data/logs/kavita.log
|
||||||
|
ln -s /kavita/data/logs/kavita.log /kavita/
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
./Kavita
|
Loading…
x
Reference in New Issue
Block a user