diff --git a/API/API.csproj b/API/API.csproj index 50a464d0b..393f5669c 100644 --- a/API/API.csproj +++ b/API/API.csproj @@ -211,4 +211,8 @@ + + + + diff --git a/API/Data/Seed.cs b/API/Data/Seed.cs index 2c7eb373b..d376fc3fb 100644 --- a/API/Data/Seed.cs +++ b/API/Data/Seed.cs @@ -9,6 +9,7 @@ using API.Entities.Enums; using API.Services; using Kavita.Common; using Microsoft.AspNetCore.Identity; +using Microsoft.EntityFrameworkCore; namespace API.Data { @@ -70,5 +71,21 @@ namespace API.Data await context.SaveChangesAsync(); } + + public static async Task SeedSeriesMetadata(DataContext context) + { + await context.Database.EnsureCreatedAsync(); + + context.Database.EnsureCreated(); + var series = await context.Series + .Include(s => s.Metadata).ToListAsync(); + + foreach (var s in series) + { + s.Metadata ??= new SeriesMetadata(); + } + + await context.SaveChangesAsync(); + } } } \ No newline at end of file diff --git a/Dockerfile.alpine b/Dockerfile.alpine new file mode 100644 index 000000000..faacfa823 --- /dev/null +++ b/Dockerfile.alpine @@ -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"] diff --git a/Dockerfile.arm b/Dockerfile.arm new file mode 100644 index 000000000..e28430a38 --- /dev/null +++ b/Dockerfile.arm @@ -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"] diff --git a/build_target.sh b/build_target.sh new file mode 100644 index 000000000..56c54ba79 --- /dev/null +++ b/build_target.sh @@ -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