Skip to content

Commit

Permalink
Added Dockerfiles to main repo (Kareadita#225)
Browse files Browse the repository at this point in the history
* Added Dockerfiles
  • Loading branch information
Kizaing authored May 19, 2021
1 parent 77c5271 commit 7b02ddf
Show file tree
Hide file tree
Showing 7 changed files with 210 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Set line formatting for scripts

*.sh text eol=lf
44 changes: 44 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -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 changes: 28 additions & 0 deletions Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -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 changes: 27 additions & 0 deletions Dockerfile.arm
Original file line number Diff line number Diff line change
@@ -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 changes: 27 additions & 0 deletions build_target.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 13 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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 changes: 68 additions & 0 deletions entrypoint.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 7b02ddf

Please sign in to comment.